微服务概念
一、什么是微服务架构
微服务,是一个小的、松耦合的分布式服务。
为什么需要微服务:
1)单体系统部署在一个进程中,修改了一个小功能,为了部署上线就会影响其他功能。
2)单体应用各个功能模块的使用场景、并发量、消耗资源类型各不相同,对于资源的利用又互相影响,
这样使得对各个模块的系统容量很难给出较为准确的评估。
微服务是系统架构的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个在各自独立进程中运行的小型服务,
服务之间通过基于HTTP的RESTful API进行通信协作。
二、实施微服务的挑战
实施微服务需要信奉的重要概念是:分解和分离应用程序的功能,使他们完全彼此独立。
1.单体应用拆分为分布式系统后,进程间的通信机制和和故障处理措施变得更加复杂。
---解决方案:RPC框架,如HSF、Dubbo可以支持多种通信协议,Spring Cloud可以非常好地支持RESTful调用
2.服务调用的分布式事务问题变得异常突出。
---解决方案:没有通用的解决方案,最具挑战的技术难题。
3.微服务数量众多,其测试、运维变得更加困难。
---运用Docker、Devops技术及共有云PAAS平台自动化运维工具。
三、微服务架构特性
一)服务组件化
组件,是一个可独立更换和升级的单元。
二)按业务组织团队
优势:一是可以服务内部修改产生的内耗,二是团队边界更加清晰。
三)做“产品”的态度
四)去中心化治理
当我们采用集中化架构治理方案时,通常在技术平台上都会制定统一的标准,但是每种
技术平台都有其短板,如果解决不好,很可能称为系统瓶颈。微服务构架系统中的各个
组件可以针对不同业务选择不同的技术平台。
五)去中心化数据管理
概念:让每个服务管理*的数据库。
优势:让数据管理更加细致化,通过采用更合适的技术让数据存储和性能达到最优。
劣势:数据一致性问题。
六)基础设施自动化
微服务架构中需要运维人员关注的问题成倍增长,所以,务必从一开始就构建起"持续交付"
平台来支撑整个实施过程,该平台需要:
1)自动化测试
2)自动化部署
七)容错设计
八)演进式设计