微服务架构设计模式 pdf_腾讯T4-1手写44个微服务架构设计模式,全部学会真的太厉害了...

60915648e6451658b830f48642173888.png

微服务的概念虽然直观易懂,但“细节是魔鬼”,微服务在实操落地的环节中存在诸多挑战。我们在为企业提供PaaS、人工智能、云原生平台等数字化转型解决方案时也发现,企业实现云原生,并充分利用PaaS能力的第一步,往往是对已有应用架构进行现代化微服务改造,而如何进行微服务拆分、设计微服务逻辑、实现微服务治理等实操问题成为很大的挑战。

本文既包含了微服务的原理、原则,又包含了实际落地中的架构设计模式;既包含可举一反三的理念和概念,也包含类似领域驱动设计、Saga实现事务操作、CQRS构建事件驱动系统等具体可套用的示例。本书可以帮助读者把传统的单体巨石型应用循序渐进地改造为微服务架构,从微服务的拆分,微服务架构下业务逻辑的设计以及事务、API、 通信等的实现,一直到微服务系统的测试与生产上线,帮助读者建立从无到有的完整微服务系统搭建的生命周期。

书籍优质内容节选

第8章外部APl模式

8.1外部API的设计难题

为了探索与API相关的各种问题,让我们考虑一下FTGO应用程序。如图8-1所示,该应用程序的服务由各种客户端使用。使用服务API的客户端一共有四种:

■Web应用程序,如Consumer web 应用程序一为 消费者实现基于浏览器的用户界面,Restaurant web 应用程序一实 现基于浏览器的餐馆用户界面,以及AdminWeb应用程序一实 现供内部管理员使用的用户界面。

■在浏览器中运行的JavaScript应用程序。

■移动应用程序,一个供消费者使用,另一个供送餐员使用。

■由第三方开发人员编写的应用程序。

Web应用程序在防火墙内部运行,因此它们通过高带宽、低延迟的局域网访问服务。其他客户端在防火墙之外运行,因此它们通过较低带宽、较高延迟的互联网或移动网络访问服务。

API的一种设计思路是让客户端直接调用服务。从表面上看,这听起来非常简单,毕竟,这就是客户端调用单体应用程序的API的方式。但由于存在以下弊端,这种方法很少用于微服务架构:

■细粒度服务API要求客户端发出多个请求以检索所需的数据,这样做效率低,并且可能导致糟糕的用户体验。

■由于客户端了解每项服务以及服务的API从而导致封装不足(紧耦合),因此今后很难更改服务的架构和API。

”服务可能使用对客户端而言不便或不能使用的进程间通信机制,尤其是防火墙外的客户端。

要了解有关这些弊端的更多信息,让我们来看看FTGO移动应用程序如何从服务中检索数据。

3853f18ce8035f0bb4147b696d04589d.png

e39c26f3e33fff4f555ce89aa8ba370b.png

8.1.1 FTGO 移动客户端API的设计难题

消费者使用FTGO移动客户端来下订单和管理他们的订单。想象一下,你正在开发移动客户端的View Order视图,该视图显示订单。如第7章所述,此视图显示的信息包括基本订单信息,如订单状态、付款状态、餐馆视角下的订单状态,以及送餐状态(包括其位置和运输过程中的预计送餐时间)。

FTGO应用程序的单体版本具有返回订单详细信息的API接口。移动客户端通过发出单一请求来检索所需的信息。相比之下,在FTGO应用程序的微服务版本中,如前所述,订单详细信息分散在多个服务中,包括以下内容:

■Order Service: 基本订单信息,包括详细信息和状态。

■Kitchen Service: 餐馆视角下的订单状态以及送餐员可以取餐的预计时间。

■Delivery Service: 订单的送餐状态,预计送餐时间和当前位置。

如果移动客户端直接调用服务,则必须如图8-2所示,进行多次调用以检索此数据。

6304d756630c4ff6e26924c2ee6820cb.png

e39c26f3e33fff4f555ce89aa8ba370b.png

在此设计中,移动应用程序扮演着API组合器的角色。它调用多个服务并组合结果。尽管这种方法看似合理,但它有几个严重的问题。

...........................

8.1.2其他类型客户端API的设计难题

8.2 API Gateway模式

8.2.1什么是 API Gateway模式

8.2.2 API Gateway模式的好处和弊端

8.2.3以Netlix为例的API Gateway

8.2.4 API Gateway的设计难题

8.3实现一个 API Gateway

8.3.1使用现成的 API Gateway产品或服务

8.3.2开发自己的API Gateway

8.3.3使用GraphQL实现API Gateway

第12章部署微服务应用

12.1部署模式: 编程语言特定的发布包格式

12.1.1使用编程语言特定的发布包格式进行部署的好处

12.1.2使用编程语 言特定的发布包格式进行部署的弊端

12.2部署模式: 将服务部署为虚拟机

12.2.1将服务部署为虚拟机的好处

12.2.2将服务部署为虚拟机的弊端

12.3部署模式: 将服务部署为容器

12.3.1使用 Docker部署服务

12.3.2将服务部署为容器的好处

12.3.3将服务部署为容器的弊端

12.4使用Kubernetes部署FTGO应用程序

12.4.1什么是Kubernetes

12.4.2在 Kubernetes.上部署Restaurant Service

12.4.3部署 API Gateway

12.4.4零停机部署

12.4.5使用服务网格分隔部署与发布流程

e99dd4aa5f37ba6255c0b8e49f3a5d8b.png

e39c26f3e33fff4f555ce89aa8ba370b.png

12.5部署模式: Serverless部署

12.5.1使用 AWS Lambda进行Serverless部署

12.5.2开发Lambda函数

12.5.3调用Lambda函数

12.5.4使用Lambda函数的好处

12.5.5使用Lambda函数的弊端

12.6使用AWS Lambda和AWS Gateway部署RESTful服务

12.6.1 AWS Lambda版本的Restaurant Service

12.6.2把服务打包为ZIP文件

12.6.3使用Serverless 框架部署Lambda函数

c05eb2aad7a8def21fec755870b163d8.png

e39c26f3e33fff4f555ce89aa8ba370b.png

这份微服务架构设计模式PDF,小编已经为大家整理完毕,PDF内容完整,免费获取方式在文末!

章节目录一览

第1章逃离单体地狱

cbf92a75492b893d0d3d9a79d03c2862.png

e39c26f3e33fff4f555ce89aa8ba370b.png

bcea74277a24e1bdb9f50f5f562b8a43.png

e39c26f3e33fff4f555ce89aa8ba370b.png

第2章服务的拆分策略

a15e7ccf45b26e07fc1eb2819a9a6317.png

e39c26f3e33fff4f555ce89aa8ba370b.png

第3章微服务架构中的进程间通信

ef1624a93eb70e603328379c9d467633.png

e39c26f3e33fff4f555ce89aa8ba370b.png

f443f42242d3c528f793c15d01270976.png

e39c26f3e33fff4f555ce89aa8ba370b.png

第4章使用Saga管理事务

dac2588485c7e90e13f4e9058db5a265.png

b4759454a9d7275958e2b9d059bccb75.png

e39c26f3e33fff4f555ce89aa8ba370b.png

第5章微服务架构中的业务逻辑设计

0ffb55ce0e529eb3ea90eef90ec7e5a5.png

e39c26f3e33fff4f555ce89aa8ba370b.png

第6章使用事件溯源开发业务逻辑

41b774da138543c1d755bc42348e56d3.png

e39c26f3e33fff4f555ce89aa8ba370b.png

241553980ace89531c84e8058285dcd9.png

e39c26f3e33fff4f555ce89aa8ba370b.png

第7章在微服务架构中实现查询

fa1d3e10e5e6d4fd2aeda3b6b4587255.png

e39c26f3e33fff4f555ce89aa8ba370b.png

401f469866534bfc77f33d46e08ea28e.png

e39c26f3e33fff4f555ce89aa8ba370b.png

第8章外部API 模式

98e52086812108fc2418061048a96d25.png

第9章微服务架构中的测试策略(上)

62bd434315fd20087b0c278412d336d7.png

e39c26f3e33fff4f555ce89aa8ba370b.png

第10章微服务架构中的测试策略(下)

995903c763da6058ff13ab8ca8e13e3b.png

e39c26f3e33fff4f555ce89aa8ba370b.png

第11章开发面向生产环境的微服务应用

67298d52a1dc6c9739a1ce52a3502e2d.png

e39c26f3e33fff4f555ce89aa8ba370b.png

49149570d2b09fb1a7a981aace15f63e.png

e39c26f3e33fff4f555ce89aa8ba370b.png

第12章部署微服务应用

f880513bbd2fd6afe50b70a736157bfe.png

e39c26f3e33fff4f555ce89aa8ba370b.png

第13章微服务架构的重构策略

c93218aabcd95d7a799e3fc19d49324d.png

最后的最后小编想对读者朋友们说:

第一,要记住微服务不是解决所有问题的万能“银弹”。

第二,编写整洁的代码和使用自动化测试至关重要,因为这是现代软件开发的基础。

第三,关注微服务的本质,即服务的分解和定义,而不是技术,如容器和其他工具。

第四,确保你的服务松耦合,并且可以独立开发、测试和部署,不要搞成分布式单体(Distributed Monolith),那将会是巨大的灾难。

第五,也是最重要的,不能只是在技术上采用微服务架构。拥抱DevOps的原则和实践,在组织结构上实现跨职能的自治团队,这必不可少。

还必须记住:实现微服务架构并不是你的目标。你的目标是加速大型复杂应用程序的开发。

写在最后

这份PDF领取方式也简单,作为电子版全网首发,需要领取的朋友麻烦帮忙转发点赞这篇文章+关注小编,免费获取方式这这篇文章最上面的封面图片中!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值