接下来,对于每个模式域,团队找了一个分区键 。这是一个共享字段,将一个功能组中的所有信息联系在一起 。最终,创建数据库模式功能组帮助团队将数据拆分到微服务架构所需的不同服务器和集群上 。GitHub 在单体中实现了一个查询监视器来帮助检测,并在发现跨域查询时发出告警信息 。
GitHub 有超过 5000 万用户和 1 亿个存储库,在这样的规模下,功能组可能会变得非常大 。这时,分区键就派上了用场 。例如,一种简单的方法是根据数值范围将不同的用户分配到不同的数据存储 。更常见的可能是根据每个数据集的特性(如区域和大小)所做的逻辑分组 。
GitHub 如何从单体中抽取服务呢?GitHub 认为,依赖方向只能从单体内到单体外,不能反过来,否则最终会得到一个分布式单体 。即当从单体中抽取服务时要从核心服务入手,然后逐步到特性层面 。
接下来,找出开发人员在单体环境中开发时所使用的助力工具 。最后在新服务上线运行后,务必要删除旧的代码路径 。GitHub 通过名为 Scientist 的工具来识别谁在调用这个服务,并规划好如何将流量全部导向新服务,这样就不用总是支持两套代码了 。
GitHub 首先抽取的核心服务是身份验证和授权 。GitHub 在单体外部将身份验证重写为一个镜像服务 。GitHub 的 Rails 应用程序(单体)使用 Twirp(这是一个 gRPC 风格的服务到服务通信框架)和它通信,依赖方向是由内到外 。
【GitHub前CTO:微服务是最大的架构错误!网友:这不是刚改完吗】下一步,找一些简单的小特性从单体中迁移出来,例如那些没有复杂依赖和共享逻辑的特性 。GitHub 是从 webhook 推送和语法高亮开始的 。GitHub 通过查找经常一起更改和部署的代码和数据,来确定耦合度较高的特性或功能,并以此为基础,自然地划分成可以独立于其他部分单独迭代和部署的分组 。GitHub 根据产品和业务价值来确定微服务的大小 。
此外,为了支持从单体到微服务的转型,节省时间、加速向微服务的过渡,GitHub 也做了必要的运营改变 。例如,GitHub 创建了一个自助服务运行时平台,用于微服务的打包交付,目的是大幅减轻每个团队创建微服务时的运营负担 。
如今,GitHub 已经成为基于“单体-微服务混合”的环境 。
有人放弃微服务微服务正在统治世界,甚至有可能正在成为新的默认选项 。但这几年,无数的中小团队在微服务上陷入了挣扎,很多公司在放弃微服务,其中包括一些大型企业 。
2020 年,Uber 放弃了微服务,转而使用宏服务 。Uber 支付体验平台的工程经理 Gergely Oros 表示,“Uber 最早通过构建微服务来完成很小的需求或功能,以至于出现了很多由一个人构建维护的微服务 。这些微服务的存在带来了新的复杂性和挑战,例如监控、测试、持续集成 / 持续交付(CI/CD)、服务级别协议(SLA)、跨所有微服务的库版本(安全和时区问题)等等 。”
因此在创建新平台的时候,Uber 支付体验团队对新服务进行了更加深思熟虑的规划:不再只是完成一件事,而是使其服务于一项业务功能,由 5-10 个工程师负责维护 。Orosz 把这样的服务规划称之为宏服务 。
同样,从事 seo 优化的公司Botify在运行了不到四年的微服务后也放弃了 。
Botify 平台通过 Django 应用程序的负载均衡集群提供服务 。2016 年底,Botify 工程团队想让工程师和产品经理拥有更多的局部所有权,从而可以快速将他们的产品和技术栈投入使用 。为此,团队决定将他们的 Django 应用程序拆分为微服务 。当时,他们的团队大约为 15 人,也是从身份验证和授权入手实现第一个微服务,将 Django 应用程序当前的一部分功能转移到微服务中,微服务模块也需要和其他的 Django/Python/ target=_blank class=infotextkey>Python 单体模块进行通讯 。
Botify 平台的主要难点是对客户数据进行分析 。处理用户相关数据的微服务架构旨在服务于高流量的 B2C 平台,而 Botify 的挑战在于动态地聚合数以 GB 的 SEO 数据,使其在几秒钟内可用 。对大约一万名客户的元数据以毫秒为单位进行响应,这项任务不需要高度可伸缩的微服务架构,但 Botify 的后端到后端通信减慢了这些简单的检索过程,花费了更多的时间 。
鉴于每天都要在 JAVAScript 身份验证后端和 Django 模块之间频繁地来回切换,在权衡了架构的优缺点以及潜在的迁移成本后,Botify 将身份验证后端重新加入到 Django 单体中,并于 2020 年 2 月停用了微服务 。
推荐阅读
- SpringBoot项目基础设施搭建
- Ubuntu 中安装 Microsoft Edge
- 中考前一个月如何安排时间,完成最后的复习
- 郭希宽|许敏提前出院是另有隐情?郭希宽回应网友质疑,偷换之说再添疑点
- |职场中,不要在领导面前反驳别人的说辞
- 对未来学习的规划
- 刘备在三顾茅庐前投奔了很多人 从中可以看出刘备是个什么样的人
- 据说,这是澳洲最难的7个专业
- 金铁霖|特殊的情感!李谷一在医院惊闻前夫金铁霖死讯,以另一种身份悼念
- 养殖什么动物前景最好,什么好养又赚钱?
