精华内容
下载资源
问答
  • 什么是微服务?从最简单的定义来看,微服务架构是将逻辑域划分为独立服务的同时开发软件的行为。 在过去的六年中,我听说微服务方法学以惊人的速度增长。 每个人都在谈论微服务!还有另一个转变,那就是从云计算到...
    96f2a1eaf5f843af5e75dc68cc3660f7.png

    Photo by Tatiana Latino on Unsplash

    注意:本文内容是我的见解,而非我的雇主或其他实体的见解。

    什么是微服务?

    从最简单的定义来看,微服务架构是将逻辑域划分为独立服务的同时开发软件的行为。 在过去的六年中,我听说微服务方法学以惊人的速度增长。 每个人都在谈论微服务!

    还有另一个转变,那就是从云计算到微服务。〜Steve Singh(Concur)

    大多数尚未使用微服务的工程师都生活在整体代码库中。 生活在一个单一的世界中并不都是一件坏事,并且可以使用许多已建立的架构模式来构建应用程序。 归根结底,您必须选择最适合您的应用的应用,而不是流行的应用。 如果将微服务作为体系结构模式,则逻辑和数据流在服务之间的分解和分布方式之间存在一些根本差异。 让我们快速看一下下面的两个示例。

    524300f98358ba4030951eb5c3657122.png

    Microservices vs Monoliths

    通过分解整体并分离层,您可以交换/更新单个层,而无需部署整个代码库! 不过,这仅仅是开始。

    现在,您可以创建物理抽象层以分解代码和逻辑。 创建这些域可以使工程师轻松找到并修复功能。 这也允许独立部署域。 这些抽象也可以通过诸如nuget / npm / etc之类的Package References共享代码。

    微服务引入的另一个概念是隔离的数据存储。 微服务中的数据存储有两种思路:隔离数据库或共享数据库。 如果它是共享数据库,则建议按架构拆分域。 虽然,如果它是一个隔离的数据库,您可以决定是否要为不同的域使用不同类型的数据存储。 您的客户域可能使用Sql Server数据库,而您的订单历史记录域可能使用MongoDB。 同样,使用正确的工具完成正确的工作!

    网关:您不得通过

    可以控制基础结构暴露的一种方法是网关。 可以将它视为控制服务的数据/逻辑流的一种方法,或者将一个或多个域包装在一起的一种方法。 我使用网关将外部OAuth身份验证转换为我的内部基础结构可以理解的标准共享密钥,以使其轻巧。 对于那些熟悉领域驱动设计的人,我最好的建议是将每个微服务视为有界上下文,并将每个网关都视为域。

    d473129eb2cfc93edec6232e0fd20df2.gif

    实施网关有很多好处:

    • 使用网关来分解身份验证类型或访问方法。
    • 使用网关来拆分域。
    • 使用网关按用户类型,区域或租户指示流量。
    • 使用网关将外部流量与管理流量分开。

    混合代码? 嗯?

    微服务架构的一个很酷的方面是,您的整个基础架构不必全部都是相同的结构甚至是相同的语言! 将应用程序的逻辑域分解为微服务可以使您能够使用正确的工具来完成正确的工作。 如果您的代码库是.net,但您确实希望在Elixir中编写基础结构的线程密集型部分,没问题! 这也有其自身的问题,但我确实鼓励混合水平的团队组成。 不同的平台和语言都有各自的优缺点。 如果做得对,这可以带来很多好处:

    • 跨团队的交叉授粉模式
    • 向您的工程师介绍新技术
    • 允许感兴趣的工程师突破常规并使用其他语言进行实验

    让我们分解一个例子

    系好安全带,这可能需要一点时间。 让我们更深入一点,设计一个理论架构。 在不深入研究杂草的情况下,让我们定义一个跨越几个重要边界的非常简单的商务应用程序。

    问题:我们想构建一个公共API来跟踪客户,允许下订单并保留订单的历史记录。 我们希望允许该API支持现代的前端,移动应用程序和第三方集成。 我们还知道,用户在高峰时段浏览产品的频率要比下订单的频率高100倍。 用户创建订单时,我们要向他们发送电子邮件。

    a1a3395d3743e80d714d13785d17d49e.png

    An example microservice architecture to support a commerce application.

    解决方案:上面的解决方案乍看之下似乎很复杂,但对我来说几乎没有。 我的第一步是定义我的域,在本例中是产品,订单,历史记录和客户。 我不希望我的服务集成必须单独处理每个服务,否则可能会导致业务逻辑出现一些其他严重问题。

    但是为什么要有两个网关? 这是两倍。 我想避免网关做太多事情,但是它也允许集成有选择地实现功能。 这也使我可以在购物周围部署更新,而不必部署与客户相关的更新。 我们要避免网关变得单一。

    每个服务都应该是自包含的,并且不应跨越域壁垒。 这也包括数据存储。 如果需要合并两个服务之间的逻辑,请在网关中将调用绑定在一起。 "不要越过溪流!"

    c5f08404db0393f02403fec8653a20cd.gif

    要提到的一件事是电子邮件集成。 这是参数的一个示例:服务或包引用。 我个人认为,应该将诸如SendGrid之类的电子邮件集成包装在基础结构服务中,以便您可以标准化处理电子邮件的方式。 电子邮件集成的很多因素使简单的软件包参考变得复杂。 让我们举几个……

    • 批量发送电子邮件?
    • 交货时间表?
    • 缓存的电子邮件模板?
    • 客户品牌?
    • 电子邮件记录?

    如果有这些,则可能需要考虑将其包装在服务中,并将元数据存储在该服务的数据库中。

    好了,最后一项…数据位于一堆不同的数据库中,那么报告呢? 我有一个建议给你; 每个独立的数据库都应具有自己的ETL过程,该过程可以对数据进行非规范化并将其存储在数据湖中。 我还建议任何BI工具都应直接从数据湖查询。 有很多方法可以给猫咪贴皮,但是我喜欢看到人们提出的创新解决方案。

    优点缺点

    选择微服务有很多优点和缺点,您必须确定最适合您的解决方案。

    现在您有100个问题:在过去采用微服务时,我看到的一个结果是,开发人员试图使一切都成为微服务。 我认为,出于抽象的考虑,它离抽象有点太近了。 对于某些人来说这可能是个滑坡,除非您有成熟的团队,否则这可能成为不利条件。

    除非您的系统过于复杂而无法作为一个整体进行管理,否则不要考虑使用微服务。 大多数软件系统应构建为单体应用程序。 请务必注意该整体中的良好模块化,但不要尝试将其分为单独的服务。-Martin Fowler

    独立部署:一个巨大的(有点明显)优势是单个服务的部署可以打破大型"爆炸式"部署。 一旦功能完成并针对生态系统的其余部分进行了集成测试,您就可以部署它,而不必部署整个堆栈。

    隔离域:我想向人们介绍的一个概念是安全域概念。 在设计微服务的拓扑时,应考虑这一点。 控制访问权限和服务的生存方式,是使服务在需要的地方保持简单,但在其他地方保持健壮和安全的一种很好的方法。 以这种方式控制访问,也不再需要向"授权"工程师抽象超敏感服务。

    eacef8c39dc37e6293995b8f1fbd8546.png

    Secure Domains using Infrastructure as Security

    通过基础架构实现安全性:将应用程序划分为微服务的一个真正令人敬畏的结果是,能够将敏感或管理服务抽象到防火墙后,并且仅将对它的访问权限列入白名单。 这意味着,例如,电子邮件微服务不可公开访问,但是您的公共服务可以使用它。 这大大减少了应用程序的公共空间。

    共享基础结构:沿着这种模式,您应该假设,您在域堆栈中越走越远,服务就可以变得越"共享"。 并非总是如此,但绝对是多数。 电子邮件服务就是一个很好的例子。 与允许每个服务与SendGrid通信(例如)相反,我将构建一个微服务来承担该责任。 所有需要电子邮件功能的服务都需要与该服务进行对话,以便我可以控制谁可以访问。 它还为我提供了一个处理品牌或模板的位置!

    数据库是独占还是共享?

    进入微服务时,您首先要做出的决定之一是选择每个服务使用一个数据库还是跨服务使用共享数据库。 就个人而言,我更喜欢每个服务使用一个数据库来解耦数据并创建更容易的部署管道。 如果选择这种方式,则需要确定如何跨数据库整合外键或查找数据。 如果您需要将这些数据放在一起进行分析或报告,通常可以将其ETL放入数据仓库并整理数据。

    示例:如果您有一个用于客户的微服务和一个用于订单历史记录的微服务,则需要将CustomerId与订单历史记录一起存储。 当ETL运行此历史记录记录时,您将预取客户记录并将数据展平以存储在数据池中的表中。

    微服务适合我吗?

    微服务并非适合所有人。 迈出下一步还意味着要做好准备……成功和失败。 这是为工作选择合适的工具。 有时,这意味着您不必选择"热门"技术。 新技术并没有错,但保持公正很重要。

    如果您无法构建整体,那么为什么您认为微服务才是答案?-西蒙·布朗

    7f0bddc80a63f9297b6991e717b425fa.gif

    采用微服务与成熟度和刚性有关。 您必须准备好在部署和数据管道流程中引入一些麻烦,因为使用微服务,您可以独立部署较小的代码单元,并且必须确保一旦部署,它不会破坏现有的任何内容。

    您必须准备好完全采用语义版本控制和包管理。 引入微服务时,我经常听到工程师对软件包管理和"转换版本"的抱怨。 是的,这可能很麻烦,但部署时会有些许痛苦,但会引起一些注意。

    好的,微服务适合我,现在呢?

    有很多策略可以将整体拆分为微服务,我将在另一篇文章中深入介绍。 但是在此之前,让我们介绍一些高层次的兴趣点。 有四个要点要解决,我将按照采用的顺序进行介绍。

    1 突破基础架构服务:将基础级别的功能区域分解为整个集群可以使用的服务,这是打破整体的重要的第一步。

    电子邮件微服务就是一个很好的例子。 您可以轻松引用Sendgrid nuget包并开始发送电子邮件。 但是,如果您想对每封电子邮件应用逻辑(例如将其包装在模板中),该怎么办? 您应该站起来一个微服务,该微服务采用通用的数据合同来发送电子邮件,将其封装在服务内的模板逻辑,并使其完成发送电子邮件的工作。 这也使您能够更改电子邮件提供商/机制并仅部署微服务。

    2 将可重复使用的项目移至"包引用"中:与上面的相同,但不需要扩展名或基于租户的自定义。

    一个示例是与RabbitMQ实例对话的持久队列连接器。 将此功能包装在服务中没有任何意义。 仅创建一个nuget包并允许服务引用它并调用队列就可以了。

    3 识别域服务:识别域可能是进入微服务领域最具挑战性的部分。 开发人员经常为可能(表面上)存在于两个逻辑域之间的业务逻辑块而苦恼。 永远不要重复这种逻辑,如果不能决定,我建议您坚持一个经常问自己的问题:该记录的根数据类型是什么,或者最经常请求哪个域。

    参考上面的购物车示例,例如" GetRecentOrders"之类的调用。 这些数据的根源是历史记录,但由客户提供。 我要做的就是将此呼叫放入"历史记录"服务中,并需要一个CustomerId来获取数据。

    4 识别网关服务:在定义服务拓扑之前,最后一项真正的任务是识别网关。 这可能很困难,因为它是对域进行分组并确定前端(或第三方消费者)如何导航服务的好地方。 但是,您不需要太多的网关。

    这样的一个例子是在逻辑上将您的管理服务分组在" Admin Gateway"后面,并实施更严格的身份验证要求和角色管理。 您甚至可以使用网关将允许使用此网关的IP地址或应用程序列入白名单。

    49b4cf1eaf33c901fb895b478fd4ac64.gif

    由于每种解决方案都不相同,因此很难给出将整体分解为微服务的蓝图。 但我希望您现在有一个制定自己的策略的基础。

    结论

    您是选择使用微服务,无服务器功能还是坚持使用单体服务; 最终,您必须选择最适合您的平台和团队的内容。 您必须考虑到公司采用的技术标准或语言,或者公司希望采用的技术指导。我坚信微服务应该成为构建现代Web服务的标准。

    有许多方法可以沿着微服务道路走,许多人对此事有很强的见解。 不要害怕慢慢地遍历一个模式,看看什么有效,什么无效。 如果它开始不适合您的目标,请进行调整。 不用遗憾,这是我们学习和改进现有模式的方法!

    随着我对无服务器功能的了解越来越多,肯定有一个地方可以填补微服务的空白。 但是,在某些情况下,也可以完全取代它,例如处理来自第三方服务(例如Twilio)的Web挂钩。 即用即弃模式是学习无服务器并防止微服务执行过多操作的绝对完美方法。 但这是我们应该在另一篇文章中探讨的内容。

    (本文翻译自Chris Fryer的文章《Microservice Architecture & Design》,参考:https://medium.com/@cfryerdev/microservice-architecture-design-2ac7eaae532)

    展开全文
  • 本文采用 DDD(领域驱动设计)作为微服务设计指导思想,通过事件风暴建立领域模型,合理划分领域逻辑和物理边界,建立领域对象及服务矩阵和服务架构图,定义符合 DDD 分层架构思想的代码结构模型,保证业务模型与...
  • 拥有10年工作经验,在Scrum、看板、规模化敏捷等方法论,以及精益需求管理、自动化测试、持续集成、领域驱动设计微服务等具体实践方面都有丰富的积累。微信号:zhangjun695339 目录 · · · · · · 前言...

    版权声明

    1. 本站文章和资源均来自互联网收集和整理,本站不承担任何责任及版权问题。

    2. 相关版权归作者及其公司所有,仅供学习研究用途,请勿用于商业目的。

    3. 请于下载后24小时内删除,如果喜欢此资源,请购买正版。

    4. 若侵犯您的版权,请发邮件至webmaster@ishare1.cn联系我们,我们确认后将立即删除。

    内容简介  · · · · · ·

    本书全面介绍了

    作者简介  · · · · · ·

    作者简介:

    Sam Newman

    是ThoughtWorks公司的技术专家、ThoughtWorks内部系统架构师,同时还为全球的客户提供咨询服务。他在开发和IT运维方面与全球多个领域的公司有过合作。

    译者简介:

    崔力强

    阿里巴巴技术专家,目前专注于持续交付相关的产品开发。曾在ThoughtWorks任职多年,从事软件定制开发、敏捷软件开发的相关咨询等工作,帮助过数个团队和项目进行精益需求管理、软件设计、自动化测试和持续集成等实践。微信号:blade_1986

    张骏

    2010年加入ThoughtWorks公司。作为开发人员、项目经理、资深敏捷教练和资深咨询师,在金融、电信和能源服务行业的大型复杂业务系统的设计、开发、管理、咨询等方面有丰富的经验。曾为国内外诸多客户提供软件设计、开发以及咨询服务。拥有10年工作经验,在Scrum、看板、规模化敏捷等方法论,以及精益需求管理、自动化测试、持续集成、领域驱动设计、微服务等具体实践方面都有丰富的积累。微信号:zhangjun695339

    目录  · · · · · ·

    前言  xiv

    第1章 微服务  1

    1.1 什么是微服务  2

    1.1.1 很小,专注于做好一件事  2

    1.1.2 自治性  3

    1.2 主要好处  3

    1.2.1 技术异构性  3

    1.2.2 弹性  4

    1.2.3 扩展  5

    1.2.4 简化部署  5

    1.2.5 与组织结构相匹配  6

    1.2.6 可组合性  6

    1.2.7 对可替代性的优化  6

    1.3 面向服务的架构  7

    1.4 其他分解技术  7

    1.4.1 共享库  8

    1.4.2 模块  8

    1.5 没有银弹  9

    1.6 小结  10

    第2章 演化式架构师  11

    2.1 不准确的比较  11

    2.2 架构师的演化视角  12

    2.3 分区  14

    2.4 一个原则性的方法  15

    2.4.1 战略目标  15

    2.4.2 原则  15

    2.4.3 实践  16

    2.4.4 将原则和实践相结合  16

    2.4.5 真实世界的例子  16

    2.5 要求的标准  17

    2.5.1 监控  18

    2.5.2 接口  18

    2.5.3 架构安全性  18

    2.6 代码治理  18

    2.6.1 范例  19

    2.6.2 裁剪服务代码模板  19

    2.7 技术债务  20

    2.8 例外管理  21

    2.9 集中治理和领导  21

    2.10 建设团队  22

    2.11 小结  23

    第3章 如何建模服务  24

    3.1 MusicCorp简介  24

    3.2 什么样的服务是好服务  25

    3.2.1 松耦合  25

    3.2.2 高内聚  25

    3.3 限界上下文  26

    3.3.1 共享的隐藏模型  26

    3.3.2 模块和服务  27

    3.3.3 过早划分  28

    3.4 业务功能  28

    3.5 逐步划分上下文  29

    3.6 关于业务概念的沟通  30

    3.7 技术边界  30

    3.8 小结  31

    第4章 集成  32

    4.1 寻找理想的集成技术  32

    4.1.1 避免破坏性修改  32

    4.1.2 保证API的技术无关性  32

    4.1.3 使你的服务易于消费方使用  33

    4.1.4 隐藏内部实现细节  33

    4.2 为用户创建接口  33

    4.3 共享数据库  33

    4.4 同步与异步  35

    4.5 编排与协同  35

    4.6 远程过程调用  38

    4.6.1 技术的耦合  38

    4.6.2 本地调用和远程调用并不相同  39

    4.6.3 脆弱性  39

    4.6.4 RPC很糟糕吗  40

    4.7 REST  41

    4.7.1 REST和HTTP  41

    4.7.2 超媒体作为程序状态的引擎  42

    4.7.3 JSON、XML还是其他  44

    4.7.4 留心过多的约定  44

    4.7.5 基于HTTP的REST的缺点  45

    4.8 实现基于事件的异步协作方式  46

    4.8.1 技术选择  46

    4.8.2 异步架构的复杂性  47

    4.9 服务即状态机  48

    4.10 响应式扩展  48

    4.11 微服务世界中的DRY和代码重用的危险  49

    4.12 按引用访问  50

    4.13 版本管理  51

    4.13.1 尽可能推迟  51

    4.13.2 及早发现破坏性修改  52

    4.13.3 使用语义化的版本管理  53

    4.13.4 不同的接口共存  53

    4.13.5 同时使用多个版本的服务  54

    4.14 用户界面  55

    4.14.1 走向数字化  56

    4.14.2 约束  56

    4.14.3 API组合  57

    4.14.4 UI片段的组合  57

    4.14.5 为前端服务的后端  59

    4.14.6 一种混合方式  60

    4.15 与第三方软件集成  61

    4.15.1 缺乏控制  61

    4.15.2 定制化  62

    4.15.3 意大利面式的集成  62

    4.15.4 在自己可控的平台进行定制化  62

    4.15.5 绞杀者模式  64

    4.16 小结  65

    第5章 分解单块系统  66

    5.1 关键是接缝  66

    5.2 分解MusicCorp  67

    5.3 分解单块系统的原因  68

    5.3.1 改变的速度  68

    5.3.2 团队结构  68

    5.3.3 安全  68

    5.3.4 技术  68

    5.4 杂乱的依赖  69

    5.5 数据库  69

    5.6 找到问题的关键  69

    5.7 例子:打破外键关系  70

    5.8 例子:共享静态数据  71

    5.9 例子:共享数据  72

    5.10 例子:共享表  73

    5.11 重构数据库  74

    5.12 事务边界  75

    5.12.1 再试一次  76

    5.12.2 终止整个操作  77

    5.12.3 分布式事务  77

    5.12.4 应该怎么办呢  78

    5.13 报告  78

    5.14 报告数据库  78

    5.15 通过服务调用来获取数据  80

    5.16 数据导出  81

    5.17 事件数据导出  82

    5.18 数据导出的备份  83

    5.19 走向实时  84

    5.20 修改的代价  84

    5.21 理解根本原因  84

    5.22 小结  85

    第6章 部署  86

    6.1 持续集成简介  86

    6.2 把持续集成映射到微服务  87

    6.3 构建流水线和持续交付  90

    6.4 平台特定的构建物  91

    6.5 操作系统构建物  92

    6.6 定制化镜像  93

    6.6.1 将镜像作为构建物  94

    6.6.2 不可变服务器  95

    6.7 环境  95

    6.8 服务配置  96

    6.9 服务与主机之间的映射  97

    6.9.1 单主机多服务  97

    6.9.2 应用程序容器  99

    6.9.3 每个主机一个服务  100

    6.9.4 平台即服务  101

    6.10 自动化  101

    6.11 从物理机到虚拟机  102

    6.11.1 传统的虚拟化技术  103

    6.11.2 Vagrant  104

    6.11.3 Linux容器  104

    6.11.4 Docker  106

    6.12 一个部署接口  107

    6.13 小结  109

    第7章 测试  110

    7.1 测试类型  110

    7.2 测试范围  111

    7.2.1 单元测试  112

    7.2.2 服务测试  113

    7.2.3 端到端测试  114

    7.2.4 权衡  114

    7.2.5 比例  115

    7.3 实现服务测试  115

    7.3.1 mock还是打桩  115

    7.3.2 智能的打桩服务  116

    7.4 微妙的端到端测试  117

    7.5 端到端测试的缺点  118

    7.6 脆弱的测试  118

    7.6.1 谁来写这些测试  119

    7.6.2 测试多长时间  119

    7.6.3 大量的堆积  120

    7.6.4 元版本  120

    7.7 测试场景,而不是故事  121

    7.8 拯救消费者驱动的测试  121

    7.8.1 Pact  123

    7.8.2 关于沟通  124

    7.9 还应该使用端到端测试吗  124

    7.10 部署后再测试  125

    7.10.1 区分部署和上线  125

    7.10.2 金丝雀发布  126

    7.10.3 平均修复时间胜过平均故障间隔时间  127

    7.11 跨功能的测试  128

    7.12 小结  129

    第8章 监控  131

    8.1 单一服务,单一服务器  132

    8.2 单一服务,多个服务器  132

    8.3 多个服务,多个服务器  133

    8.4 日志,日志,更多的日志  134

    8.5 多个服务的指标跟踪  135

    8.6 服务指标  135

    8.7 综合监控  136

    8.8 关联标识  137

    8.9 级联  139

    8.10 标准化  139

    8.11 考虑受众  140

    8.12 未来  140

    8.13 小结  141

    第9章 安全  143

    9.1 身份验证和授权  143

    9.1.1 常见的单点登录实现  144

    9.1.2 单点登录网关  145

    9.1.3 细粒度的授权  146

    9.2 服务间的身份验证和授权  146

    9.2.1 在边界内允许一切  146

    9.2.2 HTTP(S) 基本身份验证  147

    9.2.3 使用SAML或OpenID Connect  148

    9.2.4 客户端证书  148

    9.2.5 HTTP之上的HMAC  149

    9.2.6 API密钥  149

    9.2.7 代理问题  150

    9.3 静态数据的安全  152

    9.3.1 使用众所周知的加密算法  152

    9.3.2 一切皆与密钥相关  153

    9.3.3 选择你的目标  153

    9.3.4 按需解密  153

    9.3.5 加密备份  153

    9.4 深度防御  154

    9.4.1 防火墙  154

    9.4.2 日志  154

    9.4.3 入侵检测(和预防)系统  154

    9.4.4 网络隔离  155

    9.4.5 操作系统  155

    9.5 一个示例  156

    9.6 保持节俭  158

    9.7 人的因素  158

    9.8 黄金法则  158

    9.9 内建安全  159

    9.10 外部验证  159

    9.11 小结  159

    第10章 康威定律和系统设计  161

    10.1 证据  161

    10.1.1 松耦合组织和紧耦合组织  162

    10.1.2 Windows Vista  162

    10.2 Netflix和Amazon  162

    10.3 我们可以做什么  163

    10.4 适应沟通途径  163

    10.5 服务所有权  164

    10.6 共享服务的原因  164

    10.6.1 难以分割  164

    10.6.2 特性团队  164

    10.6.3 交付瓶颈  165

    10.7 内部开源  166

    10.7.1 守护者的角色  166

    10.7.2 成熟  166

    10.7.3 工具  167

    10.8 限界上下文和团队结构  167

    10.9 孤儿服务  167

    10.10 案例研究:RealEstate.com.au  168

    10.11 反向的康威定律  169

    10.12 人  170

    10.13 小结  170

    第11章 规模化微服务  171

    11.1 故障无处不在  171

    11.2 多少是太多  172

    11.3 功能降级  173

    11.4 架构性安全措施  174

    11.5 反脆弱的组织  175

    11.5.1 超时  176

    11.5.2 断路器  176

    11.5.3 舱壁  178

    11.5.4 隔离  179

    11.6 幂等  179

    11.7 扩展  180

    11.7.1 更强大的主机  181

    11.7.2 拆分负载  181

    11.7.3 分散风险  181

    11.7.4 负载均衡  182

    11.7.5 基于worker的系统  184

    11.7.6 重新设计  184

    11.8 扩展数据库  185

    11.8.1 服务的可用性和数据的持久性  185

    11.8.2 扩展读取  185

    11.8.3 扩展写操作  186

    11.8.4 共享数据库基础设施  187

    11.8.5 CQRS  187

    11.9 缓存  188

    11.9.1 客户端、 代理和服务器端缓存  188

    11.9.2 HTTP缓存  189

    11.9.3 为写使用缓存  190

    11.9.4 为弹性使用缓存  190

    11.9.5 隐藏源服务  191

    11.9.6 保持简单  191

    11.9.7 缓存中毒:一个警示  192

    11.10 自动伸缩  192

    11.11 CAP定理  193

    11.11.1 牺牲一致性  194

    11.11.2 牺牲可用性  195

    11.11.3 牺牲分区容忍性  195

    11.11.4 AP还是CP  196

    11.11.5 这不是全部或全不  196

    11.11.6 真实世界  197

    11.12 服务发现  197

    11.13 动态服务注册  199

    11.13.1 Zookeeper  199

    11.13.2 Consul  200

    11.13.4 构造你自己的系统  201

    11.13.5 别忘了人  201

    11.14 文档服务  201

    11.14.1 Swagger  202

    11.14.2 HAL 和HAL浏览器  202

    11.15 自描述系统  203

    11.16 小结  203

    第12章 总结  204

    12.1 微服务的原则  204

    12.1.1 围绕业务概念建模  205

    12.1.2 接受自动化文化  205

    12.1.3 隐藏内部实现细节  205

    12.1.4 让一切都去中心化  206

    12.1.5 可独立部署  206

    12.1.6 隔离失败  206

    12.1.7 高度可观察  207

    12.2 什么时候你不应该使用微服务  207

    12.3 临别赠言  208

    关于作者  209

    关于封面  209

    下载地址:(点击下方"网盘下载"即可下载,如资源失效,请在本页下方留言,站长会尽快补档)

    展开全文
  • 微服务架构设计.pdf

    2021-01-28 16:04:54
    微服务架构设计
  • 有详细的书签目录 Microservice Patterns : With examples in Java 克里斯-理查森(Chris Richardson)
  • 微服务模式和最佳实践始于对微服务关键概念的学习,以及如何在设计微服务时做出正确的选择。然后,本篇将介绍内部微服务应用程序中的各种模式,如缓存策略、异步机制、CQRS和事件源等。随着问题的不断推进,读者将...

    微服务是目前业界开发中的一个热门趋势。许多企业采用这种方法来实现敏捷性和持续交付的应用程序以获得竞争优势。本篇将介绍不同阶段的微服务应用程序开发的不同设计模式及其最佳实践方案。微服务模式和最佳实践始于对微服务关键概念的学习,以及如何在设计微服务时做出正确的选择。然后,本篇将介绍内部微服务应用程序中的各种模式,如缓存策略、异步机制、CQRS和事件源等。随着问题的不断推进,读者将深入了解微服务的设计模式。

    全篇涉及的主要内容:

    • 如何将单体应用程序拆分为微服务
    • 实现缓存策略、CQRS和事件源以及断路器模式
    • 整合不同的微服务设计模式,例如共享数据、聚合器、代理和链接
    • 实现合并测试模式,如集成、签名和monkey测试
    • 使用JWT、API网关和单点登录的安全微服务
    • 部署持续集成或交付的微服务

    第1章微服务概念

    5fb0132b332c9583e67bb0fd1cdfe032.png

    第2章微服务工具

    542b4444bab21bec576d4244acfa74d0.png
    1bad43f3872988cc4cbbde5501871144.png
    d3e2edeaf989667fdc0b22e58a7d84c1.png

    第3章内部模式

    5e9701415cafad3272e9fd40255381d9.png
    3d868e68113e2495744facfe0967909e.png

    第4章微服务生态环境

    7b07625774a75ff05a9e6195b22861dd.png
    4ad74ba26514081fc3a94cc07325154b.png

    第5章共享数据微服务设计模式

    f579c6dcc5cebbf774c714a75941c92a.png
    4433ab9ebddbe46ef1045fa5dec425b9.png
    ec057c4349c2e8bce0cd19670109d1e5.png

    第6章聚合器微服务设计模式

    32c6eadfd9e958c841cb0c8240501793.png

    这份微服务的PDF内容太多啦,小编没有办法为大家一一展示出来,需要免费的朋友麻烦帮忙转发一下这篇文章+关注我,然后私信【666】免费获取获取方式。

    第7章代理微服务设计模式

    e8855b9b71a157e58bce63d9ca1a218c.png
    80a5c0504fb3410d471a434615d41d4f.png

    第8章链式微服务设计模式

    1fee7d2668daadd88d7487b1ee3a8f96.png

    第9章分支微服务设计模式

    bcd072ace8532cb4b02182f7188c84b3.png
    4eb18f0768ca46a9c2620d2669b2f575.png

    第10章异步消息微服务

    72fede4b7ec58d3c40cb0a5d7d238f1a.png
    616bab90c8b21df9ef7335fdbf7e3d73.png

    第11章微服务间的协同工作

    70cfe2ed76e610262bb8d2acc239daef.png

    第12章微服务测试

    c5e84b17865229731ebd6a5391745b85.png

    第13章安全监测和部署方案

    7c8e53230add1a84222c29fa24fb4f87.png
    454a432894bde41f942a16a17d9812cb.png

    这份微服务的PDF内容太多啦,小编没有办法为大家一一展示出来,需要免费的朋友麻烦帮忙转发一下这篇文章+关注我,然后私信【666】免费获取获取方式。

    展开全文
  • 微服务短信设计.pdf

    2019-05-10 14:53:06
    短信微服务设计与实现,介绍如何用spring boot实现一个通用的短信服务
  • 在本书中可以学到:■ 使用领域驱动设计方法来设计和实现微服务■ 使用Spring Security实现微服务的安全性■ 部署和测试微服务■ 检测和调试开发过程出现的问题■ 利用JavaScript的Web应用程序来使用微服务■ 学习...

    摘要

    适读人群 :本书适合想要了解微服务架构,以及想要深入了解如何有效地实施企业级微服务的Java开发人员。

    在本书中可以学到:

    ■ 使用领域驱动设计方法来设计和实现微服务

    ■ 使用Spring Security实现微服务的安全性

    ■ 部署和测试微服务

    ■ 检测和调试开发过程出现的问题

    ■ 利用JavaScript的Web应用程序来使用微服务

    ■ 学习关于微服务的最佳做法和一般原则

    Java微服务 作者:(美)沙鲁巴·夏尔马(Sourabh Sharma)

    Java微服务 出版社:电子工业出版社

    Java微服务 内容简介

    微服务是利用云平台开发企业应用程序的新技术,它是小型、轻量和过程驱动的组件。微服务适合设计可扩展、易于维护的应用程序。它可以使开发更容易,还能使资源得到zui佳利用。《Java微服务》帮助你用Java构建供企业使用的微服务架构,内容包括微服务核心概念和框架、大型软件项目的高层次设计、开发环境设置和前期配置、对微服务架构持续集成的部署、实现微服务的安全性、有效地执行测试、微服务设计的zui佳做法和一般原则,以及如何检测和调试问题。

    《Java微服务》适合想要了解微服务架构,以及想要深入了解如何有效地实施企业级微服务的Java 开发人员。

    Java微服务 目录

    前言

    1 一种解决方法

    微服务的演变

    整体式架构概述

    整体式架构的局限性与它的微服务解决方案的对比

    小结

    2 设置开发环境

    Spring Boot配置

    示例REST程序

    设置应用程序构建

    使用Postman Chrome扩展测试REST API

    NetBeans IDE安装和设置

    参考资料

    小结

    3 领域驱动设计

    领域驱动设计基本原理

    组成部分

    领域驱动设计的工件

    战略设计和原则

    示例领域服务

    小结

    4 实现微服务

    OTRS概述

    开发和实现微服务

    测试

    参考资料

    小结

    5 部署和测试

    使用Netflix OSS的微服务架构概述

    负载均衡

    电路断路器与监控

    使用容器部署微服务

    参考资料

    小结

    6 实现微服务的安全性

    启用安全套接字层

    身份验证和授权

    使用Spring Security的OAuth实现

    参考资料

    小结

    7 利用微服务Web应用程序来使用服务

    AngularJS框架概述

    OTRS功能的开发

    设置web应用程序

    小结

    8 最佳做法和一般原则

    概述和心态

    最佳做法和原则

    微服务框架和工具

    参考资料

    小结

    9 故障排除指南

    日志记录和ELK环境

    服务调用关联ID的使用

    依赖项和版本

    参考资料

    小结

    1744e933926f15188f09e339c39d7616.png

    展开全文
  • 微服务这几年不可谓不火,很多技术团队都开始在自己的项目上引入了微服务。一方面这些团队确实很好的推动了微服务的应用和发展,另一方面也可以看到一些盲目追技术热点的行为所带来的危害,比如很多中小团队对微服务...
  • 立即注册xjava自学网(http://www.137zw.com)-java论坛,java电子书推荐:《 微服务架构设计模式》java电子书推荐理由:本书由微服务架构的先驱、Java开发者社区的意见领袖 Chris Richardson亲笔撰写,旨在帮助架构师...
  • 前言微服务架构 = 80% 的 SOA 服务架构思想 + 100% 的组件化架构思想 + 80% 的领域建模思想最新项目比较忙,没有时间给自己充电,刚好在项目中有做过一些分布式架构设计也提供了具体的解决方案,现在整理一下,对我...
  • 微服务架构设计模式 pdf

    千次阅读 多人点赞 2020-09-14 10:30:41
    链接:https://pan.baidu.com/s/1RCsi9bDoPgQw0swztzsmBQ 提取码:jhie 若链接失效,请联系本人:18642984053@163.com
  • 云计算考核 - 分析电子银行需求采用微服务架构对系统进行设计的需求说明文档,包括主要的功能模块,以及考核要求
  • 分层API架构中隔离状态除了合并微服务架构的数据交换模式(例如,合并为事件)之外,还有一种获得一致性的方法是合并每个微服务的内部一致性。相比较于期望通过数据交换获得一致性,不如期望查询时数据的一致性。通常...
  • 微服务架构.pdf

    2019-07-20 23:01:57
    微服务架构设计全面解析,快速入门并掌握微服务设计。 微服务架构设计全面解析,快速入门并掌握微服务设计
  • 当在微服务体系上实施事件驱动架构时,它能够提供一些强大的抽象。事件驱动系统通常使用某种类型的队列(类似于面向消息的系统),但是围绕队列所传递内容的设计和行为,强制执行一个标准;具体来说,就是事件。人们...
  • 微服务之所以火热是因为相对之前的单体应用有不少优点,它更能适应现在需求的快速变更的大环境,本文将介绍一下微服务架构设计的一些要点
  • 前言本文的目标是让架构师和程序员学会使用微服务架构成功开发应用程序。本文不仅讨论了微服务架构的好处,还描述了...本文侧重于解释微服务架构的设计模式和其他概念。无论读者使用何种技术栈,我的目标都是让你...
  • 微服务架构设计与实践-内训方案
  • 目前微服务的现状是概念多于实践,管理和架构人员往往不知道如何落地微服务,《微服务架构实战》从软件工程的角度切入,融入...概念篇详细阐述微服务的由来和设计要点。开发篇介绍Spring Boot、Docker和Spring Clou...
  • 使用无服务器架构设计微服务
  • 微服务:从设计到部署》
  • 微服务架构(microservice) 是一项在云中围绕业务领域组件来创建和部署应用和服务的新技术,由Martin Fowler于2012年提出。 微服务架构构建的工具是Seneca...如果需要获取到这个[微服务架构设计模式]文档的话,关注
  • 微服务架构设计与实践培训讲义,上传只是为了自己看看,有需要的可以借鉴一下.讲解了一些关于微服务的基础知识和简单的应用.
  • GopherChina 讲师PPT 之 1.1 大型微服务框架设计实践 - 杜欢.pdf
  • 我们在为企业提供PaaS、人工智能、云原生平台等数字化转型解决方案时也发现,企业实现云原生,并充分利用PaaS能力的第一步,往往是对已有应用架构进行现代化微服务改造,而如何进行微服务拆分、设计微服务逻辑、实现...
  • 公司新产品微服务架构及部署设计,希望对进入微服务开发的同行有点帮助
  • 入门级模式之细粒度SOA细粒度SOA可以说是微服务的“大爆炸”时代。许多人认为,细粒度SOA架构风格起源于Netflix。在一开始,Netflix宣称他们构建的架构就是细粒度的SOA。对于SOA架构的实践者来说,细粒度SOA的特征从...
  • 微服务:从设计到部署(中文完整版) PDF 非扫描版 文字清晰

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 402
精华内容 160
关键字:

pdf微服务设计