拯救之道——微服务架构(架构介绍,架构好处与弊端)
X轴扩展:在多个实例之间实现请求的负载均衡
Z轴扩展:根据请求的属性路由请求
Y轴扩展:根据功能把应用拆分为服务
别担心:松耦合不会让Larry Ellison挣更多钱
Order Service:管理订单。
Delivery Service:管理从餐馆到客户之间的订单派送(送餐) 。
Restaurant Service:维护餐馆有关的信息。
Kitchen Service:管理订单的准备过程。
Accounting Service:处理账单和付款。
SOA |
微服务 | |
服务间通信 |
智能管道,例如Enterprise Service Bus (ESB),往往采用重量级协议,例如SOAP 或其他WS*标准 |
使用哑管道,例如消息代理,或者服务之间点对点通信,使用例如REST 或gRPC 类的轻量级协议 |
数据管理 |
全局数据模型并共享数据库 |
每个服务都有自己的数据模型和数据库 |
典型服务的规模 |
较大的单体应用 |
较小的服务 |
使大型的复杂应用程序可以持续交付和持续部署。
每个服务都相对较小并容易维护。
服务可以独立部署。
服务可以独立扩展。
微服务架构可以实现团队的自治。
更容易实验和采纳新的技术。
更好的容错性。
使大型的复杂应用程序可以持续交付和持续部署
它拥有持续交付和持续部署所需要的可测试性。
自动化测试是持续交付和持续部署的一个重要环节。因为每一个服务都相对较小,编写和执行自动化测试变得很容易。因此,应用程序的bug 也就更少。
它拥有持续交付和持续部署所需要的可部署性。
每个服务都可以独立于其他服务进行部署。如果负责服务的开发人员需要部署对该服务的更改,他们不需要与其他开发人员协调就可以进行。因此,将更改频繁部署到生产中要容易得多。
它使开发团队能够自主且松散耦合。
你可以将工程组织构建为一个小型(例如,两个比萨。“两个比萨” 原则是指某个事情的参与人数不能多到两个比萨饼还不够他们吃饱的地步。亚马逊CEO 杰夫·贝索斯认为事实上并非参与人数越多越好,他认为人数过多不利千决策的形成, 并会提高沟通的成本,这被称为“两个比萨” 原则)团队的集合。每个团队全权负责一个或多个相关服务的开发和部署。如下图所示,每个团队可以独立于所有其他团队开发、部署和扩展他们的服务。结果,开发的速度变得更快。
缩短了产品(或新功能)的上市时间,使企业能够快速响应客户的反馈。
使企业能够提供当今客户所期望的可靠服务。
员工满意度更高,因为开发人员可以因此花费更多时间来提供有价值的功能,而不是四处担任救火队员。
每个服务都相对较小并容易维护
服务可以独立扩展
更好的容错性
更容易实验和采纳新的技术
服务的拆分和定义是一项挑战。
分布式系统带来的各种复杂性,使开发、测试和部署变得更困难。
当部署跨越多个服务的功能时需要谨慎地协调更多开发团队。
开发者需要思考到底应该在应用的什么阶段使用微服务架构。
服务的拆分和定义是一项挑战
分布式系统带来的各种复杂性
自动化部署工具,例如Netflix Spinnaker 。
产品化的PaaS 平台,例如Pivotal Cloud Foundry 或Red Hat OpenSh巾。
Docker 容器编排平台,例如Docker Swarm 或Kubernetes 。
当部署跨越多个服务的功能时需要谨慎地协调更多开发团队
开发者需要思考到底在应用的什么阶段使用微服务架构
的, 这个阶段不应花费太多时间在微服务架构这样的事情上)。
完