微服务就是一些可独立运行、可协同工作的小的服务。
简单的来说,就是将一个系统的不同模块转变成不同的服务,每一个服务只负责一件事。微服务强调的是一个个的个体,每一个个体完成一个具体的任务或功能,专业的事交给专业的模块来做,一个模块就做一件事情。比如说一个电子商务系统,订单模块只负责订单,登陆模块只负责登陆,这每一个模块就是一个微服务。
==(2)微服务架构==
是一种架构模式,微服务架构一定是分布式架构。一个大型复杂的软件应用系统应该由一个或多个微服务组成,服务之间通过一些轻量级交互机制来通信,比如restful和rpc。系统中的各个微服务可被独立部署,都有自己独立的进程,各个微服务之间是松耦合的,可以有自己的数据库,而且服务可以使用不同的技术加以实现。可以不因为某个模块的升级和bug影响现有的系统业务。
==(3) 微服务的优缺点==
1.单体架构
单体架构另一种架构风格,比较原始的架构。将所有功能都部署在一个web容器中运行的系统。项目打包后,所有服务都在同一个war包中,部署在一个web容器中,共用一个数据库
2.单体架构和微服务比较
(1)单体架构
优点:
1.容易测试
2.容易部署
缺点:
1.开发效率低
2.代码维护难
3.部署不灵活
4.稳定性不高
5.扩展性不够
(2)微服务
优点:
1.单一职责,逻辑清晰:每个服务即一个业务模块,逻辑清晰,让人容易理解
2.简化部署:修改了某个服务的代码,无需整个系统重新构建部署,只需要独构建部署某个
3.灵活扩展:某部分业务请求压力大,则可通过扩展某块服务,因此具有更好的扩展性
4.技术异构:因为微服务间松耦合,不同的微服务可以选择不同的技术栈进行开发。同时,在应用新技术时,可以仅针对一个微服务进行快速改造,而不会影响系统中的其它微服务,有利于系统的演进。
5.高可靠:微服务间独立部署,一个微服务的异常不会导致其它微服务同时异常
缺点:
1.复杂度高:开发人员要处理分布式系统的复杂性
2.运维复杂:系统由多个独立运行的微服务构成,需要一个设计良好的监控系统对各个微服务的运行状态进行监控。运维人员需要对系统有细致的了解才对够更好的运维系统
3.无法避免的重复工作:少部分共用功能无法提取成微服务时,各个微服务对于这部分功能通常需要重复开发,或至少要做代码复制,以避免微服务间的耦合,增加了开发成本。
4.影响性能:由于服务拆分开来,部署到不同的平台或网络,可能会引起微服务间的调用延迟问题,服务间的调用延迟可能带来整体系统的响应缓慢问题,服务间通信成本。
==(4)应用场景==
单体架构和微服务架构各有各的有优缺点,使用哪种架构,还需根据具体项目背景及需求决定
其中,在以下几点中的,不适合使用微服务:
1.开发周期长,迭代稳定:若旧项目比较稳定,不考虑使用微服务,成本太高
2.并发量低,可用性要求不高:一些用户量低的内部系统,比如OA系统
3.复杂度较小:使用微服务就是杀鸡用牛刀
==(5)微服务技术栈==
==(6)微服务框架==
1.当前各大IT公司用的服务框架有哪些
阿里Dubbo/HSF
京东JSP
新浪微博Motan
当当网Dubbox
2.各种微服务框架对比
三、分布式相关知识==1.分布式==
(1) 一个业务拆分多个子业务,部署到不同的服务器上。也就是将一个大 的系统划分为多个业务模块,多个业务模块分别部署到不同的服务器上, 各个业务模块之间通过接口进行数据交互。以缩短单个任务的执行时间来提升效率,保证服务的高性能。
(2)分布式需要做好分布式事务管理。
(3)分布式存在两个问题:任务分解(鲤鱼模型)和节点通信(通过RPC框架或消息通信件解决)
==2.集群==
(1)将同一个业务,部署到多个服务器上。就是在集群模式里,不同服务器部署、同一个业务,实现服务的负载均衡。通过单位时间内执行的任务数来提升效率,保证服务的高可用。
(2)集群需要做好session共享。一般配置nginx的负载均衡容器实现,静态资源缓存session共享可以附带实现,Nginx支持5000个并发量。
(3)负载均衡器是集群的解决方案之一,是通过添加服务器达到解决高并发的问题。
==3.负载均衡==
(1)当一台服务器的性能达极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要一台服务器充当调度者的角色,用户所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台服务器去处理。
(2)常用的负载均衡器有Nginx,LVS和HAProxy
小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是集群。为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群
四、相关文章 微服务入门权威指南
架构是什么
Nameko中文文档(翻译)