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