微服务架构 (七): 微服务粒度设计上的核心设计原则与思考的面向

2016.8.19, 深圳, Ken Fang

架构师在设计微服务时, 需把握一个核心的设计原则:

微服务 “外部的世界” 远比 “内部的世界” 重要。

微服务外部与内部的世界是以微服务边界上下文 (Bounded Context) 作划分的。而微服务的接口; 例如: REST 接口; 便是拉通了微服务外部与内部的世界。

微服务外部的世界包括:

A.       微服务外部的 Client; 微服务外部的使用者 (介面), 系统, 设备。

B.       微服务之间外部的数据交易 (Transaction)。

C.       微服务之间外部的远程调用; 在网络上所传递的信息。

微服务内部的世界包括:

A.       微服务内部需处理、运算的业务场景或功能。

B.       微服务内部所需拥有的资源; 例如: 库 (Library), 数据库, 应用伺服器, 网络IP 地址, 网络 Port, 操作系统等等。

架构师设计微服务的粒度; 边界上下文 (Bounded Context); 时, 便需仅记微服务 “外部的世界” 远比 “内部的世界” 要来得重要。也就是说, 架构师应从微服务 “外部的世界” 来界定微服务的粒度; 微服务的边界上下文 (Bounded Context)。

架构师设计微服务的粒度; 边界上下文 (Bounded Context); 时的主要思考的面向便是:

A.       先从微服务外部的 Client, 分析、识别微服务的主要目的、主要需处理、运算的业务场景或功能为何? 而形成微服务的 Pre-Bounded Context。

B.       各微服务的 Pre-Bounded Context 识别后, 便可得知微服务之间外部的数据交易 (Transaction) 是否会因为开发上技术难度的增大, 而对于整体产品架构的可靠性; 例如: 数据的一致性; 产生负面的影响?

假如, 所设计出的微服务的 Pre-Bounded Context 会因为开发上技术难度的增大, 而对于整体产品架构的可靠性; 例如: 数据的一致性; 产生负面的影响, 则架构师便应重新的思考: 将会因微服务之间外部的数据交易 (Transaction) , 而会对整体产品架构的可靠性, 产生负面影响的数个微服务, “合并” 为一个微服务。

C.       各微服务的 Pre-Bounded Context 识别后, 便可得知是否会因为过多的微服务之间外部的远程调用, 所形成的大量网络的延迟, 而使整体产品架构的性能, 产生负面的影响?

假如, 所设计出的微服务的 Pre-Bounded Context 会形成大量网络的延迟, 而使整体产品架构的性能, 产生负面的影响, 则架构师便应重新的思考: 将会因微服务之间外部的远程调用, 而会对整体产品架构的性能, 产生负面影响的数个微服务, “合并” 为一个微服务。

以微服务 “外部的世界” 远比 “内部的世界” 重要的思维的模式, 主要是将整体微服务 (产品) 的可靠性、性能的重要性要高于整体微服务 (产品) 持续部署的速度。

这样的思维最主要的目的便是: 微服务外部的世界, 仍旧是十分的脆弱与不可预期的; 例如:网络的中断、网络的安全性 (犯罪)、网络的延迟等等; 所以, 架构师应从微服务 “外部的世界” 界定微服务的粒度; 微服务的边界上下文 (Bounded Context)。

当然, 假如有一天, 微服务外部的世界已是十分的强壮, 则架构师便可从微服务 “内部的世界” 来界定微服务的粒度; 微服务的边界上下文 (Bounded Context)。而使微服持续部署的速度, 获得绝对的提升; 但, 绝对不是现在….

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏EAWorld

从单体架构迁移到微服务,8个关键的思考、实践和经验

随着微服务架构的持续火热,网络上针对微服务和单体架构的讨论也是越来越多。去年的时候,社区更多的关注点是在二者的区别以及优缺点辨析上,而今年,越来越多的人开始关注...

3926
来自专栏PHP在线

高可用性系统在大众点评的实践与经验

原文出处: 美团点评技术博客 所谓高可用性指的是系统如何保证比较高的服务可用率,在出现故障时如何应对,包括及时发现、故障转移、尽快从故障中恢复等等。本文主要以...

2787
来自专栏Java架构师学习

阿里,百度,腾讯等一线互联网公司中,Java开发的招聘标准阿里巴巴篇百度篇腾讯篇源码分析:分布式架构微服务架构性能优化Java开发工具实践项目

金三银四的跳槽热潮即将过去,在这两个月的跳槽的旺季中,作为互联网行业的三大巨头,百度、阿里巴巴、腾讯对于互联网人才有很大的吸引力,他们的员工也是众多互联网同行...

3789
来自专栏云计算D1net

微服务:数字化未来的基石

毫无疑问,数字化迁移(DX)正在彻底改变业界开展业务的方式,而云计算则是数字化迁移的关键。云的弹性确实可以帮助数字企业更快地进行沟通,增加企业的创新。但为了充分...

27313
来自专栏腾讯云技术沙龙

饶军:Apache Kafka的过去,现在,和未来

大家好,我大概简单的介绍一下,我叫饶军,我是硅谷的初创公司Confluent的联合创始人之一,我们公司的三个创始人都是在最开始在领这个公司做kafka开发出身的。...

1K8
来自专栏SDNLAB

微服务:数字化未来的基石

毫无疑问,数字化迁移(DX)正在彻底改变业界开展业务的方式,而云计算则是数字化迁移的关键。云的弹性确实可以帮助数字企业更快地进行沟通,增加企业的创新。但为了充分...

3306
来自专栏JAVA高级架构

京东架构专家分享京东架构之路

京东咚咚架构演进 咚咚是什么?咚咚之于京东相当于旺旺之于淘宝,它们都是服务于买家和卖家的沟通。 自从京东开始为第三方卖家提供入驻平台服务后,咚咚也就随之诞生了。...

3559
来自专栏美团技术团队

美团即时物流的分布式系统架构设计

美团外卖已经发展了五年,即时物流探索也经历了3年多的时间,业务从零孵化到初具规模,在整个过程中积累了一些分布式高并发系统的建设经验。最主要的收获包括两点:

592
来自专栏沃趣科技

数据库驱动企业互联网架构转型

现今几乎每个大型技术峰会,都离不开互联网金融,企业数字化转型话题。国内外大型云计算独角兽企业,例如阿里云、Amazon、微软Azure等云计算供应商更是提供一站...

691
来自专栏美团技术团队

大众点评支付渠道网关系统的实践之路

业务的快速增长,要求系统在快速迭代的同时,保持很好的扩展性和可用性。其中,交易系统除了满足上述要求之外,还必须保持数据的强一致性。对系统开发人员而言,这既是机遇...

35410

扫码关注云+社区