==========
1.1.1 单一职责
==========
微服务架构中的每个节点高度服务化,都是具有业务逻辑的,符合高内聚、低耦合原则以及单一职责原则的单元,包括数据库和数据模型;
不同的服务通过“管道”的方式灵活组合,从而构建出庞大的系统。
1.1.2 轻量级通信
===========
通过REST API模式或者RPC框架,事件流和消息代理的组合相互通信,实现服务间互相协作的轻量级通信机制。
1.1.3 独立性
=========
在微服务架构中,每个服务都是独立的业务单元,与其他服务高度解耦,只需要改变当前服务本身,就可以完成独立的开发、测试、部署、运维。
1.1.4 进程隔离
==========
在微服务架构中,应用程序由多个服务组成,每个服务都是高度自治的独立业务实体,可以运行在独立的进程中,不同的服务能非常容易地部署到不同的主机上,实现高度自治和高度隔离。
进程的隔离,还能保证服务达到动态扩缩容的能力,业务高峰期自动增加服务资源以提升并发能力,业务低谷期则可自动释放服务资源以节省开销。
1.1.5 混合技术栈和混合部署方式
==================
团队可以为不同的服务组件使用不同的技术栈和不同的部署方式(公有云、私有云、混合云)。
1.1.6 简化治理
==========
组件可以彼此独立地进行缩放,从而减少了因必须缩放整个应用程序而产生的浪费和成本,独立的发布、服务治理。
1.1.7 安全可靠,可维护。
===============
从架构上对运维提供友好的支撑,在安全、可维护的基础上规范化发布流程,支持数据存储容灾、业务模块隔离、访问权限控制、编码安全检测等。
1.2 面临的挑战
=========
1.2.1 分布式固有复杂性
==============
微服务架构是基于分布式的系统,而构建分布式系统必然会带来额外的开销。
-
性能: 分布式系统是跨进程、跨网络的调用,受网络延迟和带宽的影响。
-
可靠性: 由于高度依赖于网络状况,任何一次的远程调用都有可能失败,随着服务的增多还会出现更多的潜在故障点。因此,如何提高系统的可靠性、降低因网络引起的故障率,是系统构建的一大挑战。
-
分布式通信: 分布式通信大大增加了功能实现的复杂度,并且伴随着定位难、调试难等问题。
-
数据一致性: 需要保证分布式系统的数据强一致性,即在 C(一致性)A(可用性&#