【SOA】
百度定义:面向服务架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
从概念理解,分布式服务架构强调的是服务化以及服务的分散化,微服务则更强调服务的专业化和精细分工;
从实践的角度来看,微服务架构通常是分布式服务架构,反之则未必成立。
所以,选择微服务通常意味着需要解决分布式架构的各种难题。
微服务架构是团队面对互联网产品爆发式增长的最优选择,要解决的是快速迭代、高可靠和高可用等问题,把复杂度很高的产品拆分成一些较小的模块,并遵循康威定律,每一个模块用5-9个小团队来维护,这样可以减少沟通成本,提高协作效率,更好地实现快速迭代和弹性扩展。比如网易考拉,先用网易内部的私有云以及容器服务、负载均衡等解决并发流量的问题,再借助网易云轻舟微服务,拆分了 400 多个工程(模块),进一步提升迭代速度和扩展能力,通过服务治理、系统运维自动化等,可以提升可靠性和可用性。这是先有分布化后有服务化的例子。
既没有规模又不需要太多变化的业务,如果采用微服务架构改造,引入各种复杂性,比如部署工作量的增加、复杂链路的监控难题,这就是为微服务而微服务,只会得不偿失。
四、服务划分
横向拆分:按照不同的业务域进行拆分,例如订单、营销、风控、积分资源等。形成独立的业务领域微服务集群。
纵向拆分:把一个业务功能里的不同模块或者组件进行拆分。例如把公共组件拆分成独立的原子服务,下沉到底层,形成相对独立的原子服务层。这样一纵一横,就可以实现业务的服务化拆分。
要做好微服务的分层:梳理和抽取核心应用、公共应用,作为独立的服务下沉到核心和公共能力层,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求
总之,微服务的设计一定要 渐进式 的,总的原则是 服务内部高内聚,服务之间低耦合。
微服务特点:
- 按照业务划分服务,单个服务代码量小,业务单一,易于维护
- 每个微服务都有自己独立的基础组件,例如数据库、缓存等且运行在独立的进程中
- 微服务之间的通信是通过HTTP协议或者消息组件,且具有容错能力
- 微服务有一套服务治理的解决方案,服务之间不耦合,可以随时加入和剔除
- 单个微服务能够集群化部署,并且有负责 均衡的能力
- 整个微服务系统应该有完整的安全机制,包括用户验证,权限验证,资源保护
- 整个微服务系统有链路追踪的能力
- 有一套完整的实时日志系统
三分钟彻底弄懂什么是分布式和微服务架构
https://zhuanlan.zhihu.com/p/107142852 此文写的非常清晰