Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >干货 | 基于 DevOps 的微服务生态系统与工程实践(二)

干货 | 基于 DevOps 的微服务生态系统与工程实践(二)

作者头像
DevOps时代
发布于 2018-02-02 04:06:13
发布于 2018-02-02 04:06:13
6880
举报

上期回顾:干货 | 基于 DevOps 的微服务生态系统与工程实践(一)

前言

从2014年开始,当我接触微服务之后,我发现在微服务的演进过程中,开发和测试、运维需要相亲相爱,紧密合作,才能取得理想的效果。

本系列文章主要包括三部分内容:

第一部分:微服务与 DevOps; 第二部分:微服务生态系统; 第三部分:微服务架构的工程实践;

本文着重介绍第二部分:微服务生态系统。后续内容请持续关注 DevOps时代公众号。

三、微服务架构的生态系统

我们为什么需要「生态系统」这个词?其实在我过去接触微服务的过程中发现了如果只从架构层面对服务化进行解耦,是很难达到效果的。为什么?

因为当我们把架构拆分成多个模块化之后,如果我的测试,如果我的工具跟不上的话,可能会带来更大的内耗和成本,所以在这过程中,我们需要考虑很多综合的因素。

比如说对于分布式系统之间,因为微服务本质是分布式系统,每个服务都可以独立运行在自己的节点中,这时候我们要考虑分布式系统的同步异步,要考虑经常讨论的数据一致性问题,同时是不是有好的工具链,是不是能够保证这样一个小的服务能够快速上线。

这是一个系统化的工程,已经没有办法割裂来看架构本身,而是从今天讨论的持续集成、DevOps、端到端的交付过程中考虑解耦。

对于今天所处的社区是多元化的社区,工具、框架层出不穷,前端后端数据库都是未来解决方案,这么多如何选择?

如果我们需要去演进微服务架构,我们需要一个什么样的全景图来帮助我们识别这个能力,当有了这个全景图之后,我们可以根据按需选择不同阶段需要引入的不同技术。

基于这两点,我定了微服务的这个生态系统图(上图)。它一共包括五个部分,最上面是现在所讨论的接入层,看到层这个概念,大家不要因为过去的三层变得越来越低效,就抵触层的概念。

3.1 总览

对于接入层,更关心的是如何将用户的请求接入内部系统,这里面典型的是 API goteway、Edge Service。

第二部分是业务层,更关心服务化的方式来服务业务,通过什么样的框架去实现服务。

第三是支撑层,更多描述成今天所面临的分布式系统的挑战,包括服务的协作、安全、路由、告警、监控。

最下面是基础设施,因为对于微服务而言,如果我们希望能够起到效果,一定是基于云,只有云能够帮助我们去降低硬件的伸缩成本。右边是我们在微服务演进过程中非常重要的工程实践和流水线。

3.2 接入层

什么叫「API网关」?其实是帮助系统能够把外界的需求接到内部业务来

为什么这样做?第一点,今天对于用户端的设备变得越来越多样化,包括手机、IOS、可穿戴设备,这类设备的更新周期可能比较慢,当我们在后端定义了很多服务之后,如果希望 IOS、APP 能够直接访问,对于每一次服务的变更或者服务的UI的变化,都会去触发 APP 本身的变化,而对于IOS审核周期是七天,这对用户的更新会带来非常低的效率,所以我们希望通过这样一种集中化的方式,把用户请求接入进来。

对于 API Gateway,能够跟我们的服务部署在一起,所以服务中的交付效率会远远高于前端设备去跟服务交付,因此我们希望通过这种方式提升交付的效率。随着 APIG 的演进,有很多的框架、工具除了做请求转发,集中化控制以外,会把流量控制、安全认证也放在 APIG 验证层。

3.3 业务层

第二是业务层,我接触到了很多团队,当我们谈到微服务架构的第一反应就是如何解耦架构,我提几个常用的方法论。

对于架构的拆分一开始没有必要非追求完美,我相信在没有做过微服务架构之前,你的60分已经能够让你的系统跑得很顺畅,所以这时候面向对象一定是我们去拆分服务的基准,包括面向对象的动词、名词,名词像订单、库存、用户,动词像支付、登录,都是我们去拆分服务的出发点。

第二是可重用的逻辑,刚才我们讲到在模块化编程的时代,是把通用的逻辑抽象出来进行模块,这也是我们抽象服务的方法论。

第三是资源密集型业务,对于我们的系统是不是有对CPU计算,是不是对可伸缩的需求不一样,也是我们能够去拆分服务的方法论。

最后是领域驱动设计,这是最难的一点,右边的图定义了非常多的概念,包括聚合、实体,很多业界的文章在讲 DDD 是微服务的基础,我觉得这个可能是需要在前期做很多积累的。

对于微服务的实现,刚才讲到对于基础服务而言,我们有很多的框架,这里有一个网址,这里定义了各种语言的微服务框架,我们能够很方便使用他们去开发框架。

在很多场景里我们虽然定义了服务,但是这些服务的功能要组合起来才能提供更多的用户特性,比如我们有订单,有评论,但是当我在手机上显示的时候,希望能够显示这个订单最新的五条评论,可以让手机端去调用两个服务去获取数据,也可以做一个组合服务,它来获取订单,同时获取五条评论再交给前端应用,这就是组合模式的价值。

我们可以使用Proxy、Chained、Shared这些工具。

3.3 支撑层

  • 支撑层是像注册发现,我们为什么要注册发现?在未来,我们的服务上线之后,希望它能够更快、更有效的水平伸缩,但是当我们每做一次伸缩之后,IP地址、服务运行的物理地址是不确定的,所以我们希望通过注册发现的机制,让服务之间相互通信,我可以不用知道这个物理地址,通过注册发现的机制,就能够完成对服务的访问。随着服务数量增多,注册发现机制是我们必须要考虑的方案。
  • 第二是配置更新,对于以前的一个应用而言,我们可以把配置信息写在配置文件里,随着应用一起发布,但是对于可以独立部署的单元越来越多,而且有可能存在一个服务会被多个实例所运行,所以配置更新就变成了挑战。我们过去曾经基于亚马逊的S3做过自己的配置方案。
  • 第三是容错,错误的发生是我们必须要考虑的问题,当我们的请求量过大,当我们的负载过高时我们要考虑如何保证核心业务不被破坏,所以限流、熔断、降级是我们处于微服务规模化之后所面临的新挑战。

3.4 交付流水线与工程实践

3.4.1 微服务开发框架

第四部分是基于交付流水线与工程实践,里面包括了开发框架,交付流水线以及工程实践。

刚才讲到有很多可以利用我们的框架去开发基础服务,这里我抽出了不同语言里面使用量比较高的框架,包括像Java里面的Dropwizard、Spring boot、Scala 里面的 lagom 还有 NODEJS,这些都可以很方便的帮我们从零开始开发微服务。

但是对于企业而言,我们有大量的存量系统,对于使用这类去开发存量系统挑战非常大,因此我们在公司内部有一套开发框架,能够帮助我们把现有的 GARS 方式,能够更快的转换我们的服务,同时提供同步异步以及RPC框架协议,这个可能在七月份左右共享到开源社区,希望大家支持跟关注。

3.4.2 持续交付流水线

“持续交付流水线”这个话题大家应该听到了很多,做的最重要事情就是帮我们把代码提交之后的流程管理起来,最终做到我们能够把这次代码提交的变更发布到类生产或者生产环境上。可以看到右下角是我们定义的 TEST、STAGING 、PRODUCTION,这是通常我们去做产品发布的时候经历的三个环境。

中间的过程是从开发人员到提交代码到CI构建,打包存储的过程,我把它简化了。端到端的工具链,几乎在所有的微服务的成功案例里面,都会讲到他们会不停采用业界先进的工具。

以 Netflix 为例,在它7年的演进过程中贡献了很多的开源组件。包括我们在2013年的时候,最早使用AWS服务的时候,它本身也没有提供好的工具和管理端来管理它的资源,它是帮助我们去做自动化部署创建资源的脚本,所以我们用了很多 Netflix 的开源框架去完成我们的工具链。这里面涉及到编码、构建、测试、部署、发布。

3.5 基础设施

最底下的是基础设施层,对于微服务我们希望做的是能够快速交付和帮助我们在很多不确定的场景做水平伸缩。随着我们未来做试验、做创新的需求越来越强烈,我们希望上线之后,我的用户是一万的时候能够满足,一百万的时候也能满足。

所以对于伸缩而言,一定要借助于底层的基础设施,公有云私有云,都是不错的选择。

四、微服务架构的工程实践

最后是微服务架构的工程实践。这是 Netflix 从09到16年七年时间,把他的业务从数据中心迁到 AWS 之后的架构图。对于我们的系统而言,是不是意味着当我们把架构拆分成50个、100个之后,也能获取到这样收益呢?

这是很多组织和团队在做微服务的时候考虑的第一个问题。如果我们把架构拆成50个,100个,是否能获得同样的收益?答案是否定的。Netflix 首席云架构师说过,他们做了大量的关于流程工具和实践的演进。

微服务架构工程实践更多干货请关注后续文章

五、总结

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps时代 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于 DevOps 的微服务生态系统与工程实践(二)
本文介绍了微服务架构的演进过程、设计原则、关键技术、实践案例和工程实践。微服务架构是一种面向服务、以业务为中心、以基础设施为组件的分布式架构,旨在解决在有限研发资源下集中交付业务价值的问题。在演进过程中,微服务架构从最初的概念到实际落地,不断演进和迭代。目前,微服务架构已广泛应用于各类企业和行业,成为软件开发的主流架构。
DevOps时代
2017/07/18
1.8K0
基于 DevOps 的微服务生态系统与工程实践(二)
从技术雷达看​DevOps的十年——容器技术和微服务
在上一篇文章中,我们讲到了基础设施即代码和云计算给运维领域带来的深远影响。而 DevOps 运动不仅仅改变了运维端,同时也改变了开发端,特别是 Docker 的兴起和微服务架构的流行。在这一篇,我们将通过技术雷达上相关条目的变化来考察 Docker 和微服务的发展。
ThoughtWorks
2019/07/14
8880
推进微服务落地的 7 个步骤
微服务实施常被忽视的 5 个难点中描述了实施微服务常见的主要阻碍。本文针对前文提到的5个难点提出了 7 个步骤。每个步骤分别包含了管理和技术两方面的建议。
顾宇
2018/08/17
6670
我们如何衡量一个微服务实施的成功
本次介绍的案例来自于我曾经服务过的客户 R,到今天已经5年整了。2013年的国庆后,我加入了客户 R 的其中一个产品团队,这个团队有三个项目:一个项目做日常维护工作(BAU),这是一个长期项目。一个项目开发一些新的功能。另外一个项目就是将现有的 Java 遗留系统进行改造,把这个 Java 应用的一部分功能从 ESB 和内部调用的方式改成用 Sinatra (Ruby 的一个 Restful API 框架) 做的 HTTP 外部调用。
顾宇
2018/12/12
8320
我们如何衡量一个微服务实施的成功
干货 | 基于 DevOps 的微服务生态系统与工程实践(三)
往期回顾: 第一部分:微服务与 DevOps 干货 | 基于 DevOps 的微服务生态系统与工程实践(一) 第二部分:微服务生态系统 干货 | 基于 DevOps 的微服务生态系统与工程实践(二) 前言 从2014年开始,当我接触微服务之后,我发现在微服务的演进过程中,开发和测试、运维需要相亲相爱,紧密合作,才能取得理想的效果。 本系列文章主要包括三部分内容: 第一部分:微服务与 DevOps; 第二部分:微服务生态系统; 第三部分:微服务架构的工程实践; 本文着重介绍第三部分:微服务架构的工程实践。
DevOps时代
2018/02/02
5950
干货 | 基于 DevOps 的微服务生态系统与工程实践(三)
基于 DevOps 的微服务生态系统与工程实践(三)
DevOps时代
2017/07/20
1.2K0
基于 DevOps 的微服务生态系统与工程实践(三)
基于 DevOps 的微服务生态系统与工程实践(一)
该文介绍了微服务架构的演进过程、面临的挑战,以及从工程实践角度总结的微服务架构的生态系统和技术实践。
DevOps时代
2017/07/17
2.6K0
基于 DevOps 的微服务生态系统与工程实践(一)
企业云存储团队在微服务生态系统下的敏捷分析,设计的工程实践
Ken Fang 方俊贤
2018/01/05
7070
企业云存储团队在微服务生态系统下的敏捷分析,设计的工程实践
微服务生态系统的4层模型
在一个设计良好的微服务生态系统里,微服务与基础设施之间是分离的。微服务与硬件、网络、构建和部署管道、服务发现和负载均衡都是分离的。它们都是微服务生态系统基础设施的组成部分。如何以一种稳定可靠的、可伸缩的、可容错的方式来构建、维护和标准化基础设施,是微服务运维的根本。
博文视点Broadview
2020/06/11
1.1K0
微服务生态系统的4层模型
微服务一点都不“微”
通过这几年在项目中实践微服务,为客户提供微服务咨询,我越来越发现所谓“微服务(Micro Service)”其实一点都不“微”!这非Martin Fowler定义之过。他所定义的概念,突出了设计每个独立服务时要分解的粒度,但对于整个架构风格而言,实践微服务并不如概念所表现的那样举重若轻,然后轻而易举。一个微服务从诞生到最后的消亡,经历了设计、开发、测试、上线、运行到下线贯穿始终的生命周期。每个环节都有方方面面的因素需要考量。诸如设计原则的遵守、通信机制的选择、数据一致性的保障、健康状态的监控与跟踪,乃至于服务的配置、测试与运维,更何况还需要对企业的组织结构进行改革,遵循康威定律组建团队使之与微服务架构风格相匹配。
张逸
2019/06/20
5470
【大咖连载】微服务参考模型(适用性评估以及成熟度参考详情)
微服务参考模型梳理了产品在微服务实施过程中的适用性评估、成熟度参考、度量体系以及能力提升计划,旨在帮助团队尽早识别微服务实施过程中的风险,并有效地推进微服务相关实践的落地。
IT大咖说
2019/08/09
1.5K0
【大咖连载】微服务参考模型(适用性评估以及成熟度参考详情)
提升字节规模化效能的平台化思路|字节跳动平台工程实践
口述 | 杨振涛、姚志坤 整理 | Penny 策划 | Tina 如今,在 Kubernetes 上构建应用程序的开发人员,不仅要写代码还要负责交付和运维等。而 CNCF 云原生的 Landscape 已经有 1000+ 张卡片,覆盖应用定义与开发、编排与管理、运行时、配置、平台、可观测性与分析等,开发人员“认知负担”越来越重,所以企业需要从 2023 年开始更关注开发者体验,去聚焦开发者平台的相关建设,提供好用的工具集合或平台工程。 于是,InfoQ 发起了一场《极客有约》特别栏目《云原生趋势
深度学习与Python
2023/05/09
9100
提升字节规模化效能的平台化思路|字节跳动平台工程实践
快速演进中的微服务,我们需要深入了解哪些
当前,微服务架构在国内正处于蓬勃发展的阶段,无论是大型互联网公司还是传统的IT企业,纷纷采用微服务架构构建系统。 在过去几年里,DevOps、云原生、面向演进式架构等理念已经深入人心,围绕微服务生态也出现了大量的组件、框架、工具,这很好地支撑了海量的数据增长和用户业务需求的快速变化。 当前,微服务和云原生应用架构还在快速演进之中,其间充满了机遇和挑战。 作为软件从业人员,面对技术的更新迭代,我们唯有整装待发,才能与时俱进。 为了帮助大家更好地了解微服务架构的演进过程/软件工程实践,以及目前主流微服务技术架构
博文视点Broadview
2023/05/06
1210
快速演进中的微服务,我们需要深入了解哪些
为什么微服务实施那么难?如何高效推进微服务架构演进
前言 笔者从 2013 年加入 ThoughtWorks 至今共 4年时间。在这 4 年的时间里,我分别以 开发人员, DevOps 工程师、DevOps 咨询师、微服务架构师以及微服务咨询师的角色参与了共计 7 个产品和项目的微服务咨询和实施。其中有有成功,有失败,有反思,更多的是学习和总结。以下是我这些年来在微服务咨询上的经验总结,希望能给陷入微服务实施困境的人带来一些帮助。 难点1:“一步到位”的认知错觉 这些年微服务大红大紫,但是真正能够拿出来做为可实践的案例少之又少。大部分的微服务案例只能看到微
Java高级架构
2018/04/19
1.1K0
金融互联网行业微服务架构必须要考虑的几件事 | ArchSummit
在什么情况下,公司应该使用微服务?使用微服务之后,可能会有什么样的提升?又有哪些挑战以及哪些闭坑经验?本次采访,我们邀请到了众安金融高级架构师韩冬振,请他分享了众安金融微服务落地经验,希望为你带来思考。
深度学习与Python
2022/11/28
4030
微服务架构三十六计
微服务架构诞生以来,在各种演讲、文章、书籍上所出现的频率之高,足以看出它对软件架构领域带来的巨大影响。经过这两年的快速普及,微服务的实践已经在越来越多的组织和企业内部得以推广和运用。 未来的几年,相信会有更多的企业将目光聚焦在如何有效地将微服务落地这个核心问题上。微服务的概念看似浅显易懂,但实际上却与架构演进、领域建模、持续交付及DevOps等多个维度的方法论与实践密切相关。 在微服务的落地过程中,我们认为如下几点将成为组织实施微服务架构的必备能力。 持续交付是内功 十年以前,某个软件在一年内发布的版本数
用户1682855
2018/06/08
9380
基于DevOps的Android交付工具链建设
前言: 有人说 DevOps只适用于初创公司,有人说DevOps只适用于大公司,有人说DevOps只适用于互联网服务。事实胜于雄辩,我们来看看DevOps是如何改变Android操作系统的交付模式的。 一、DevOps 和 Android 的发展 1.1 Android 的十年 不知不觉中,从2007年Android第一个版本发布到现在已经整整十个年头。在移动互联网时代,Android基于一种开源合作的精神,同很多厂商共同打造了一个现象级的生态系统,也是一个非常成熟的生态系统。Android的成功真正影响
DevOps时代
2018/02/02
1.7K0
基于DevOps的Android交付工具链建设
从既有系统到微服务架构
微服务近年来可谓炙手可热,合理的使用微服务架构可以解耦系统、提供更好的软件伸缩性以及提高组织的敏捷性。然而现实中较少有项目一开始就会选择使用微服务架构,绝大多数新项目在最初都会务实地从更容易掌控的单体架构起步构建,如果最终发现单体架构复杂到影响了团队的开发效率及软件的伸缩性等方面时,才会开始考虑逐步将系统往微服务架构做演进。
纯洁的微笑
2018/09/30
3900
从既有系统到微服务架构
技术雷达第十九期正式发布——用百余个条目更新你的技能图谱!
ThoughtWorks每年都会出品两期技术雷达,这是一份关于技术趋势的报告,由ThoughtWorks 技术战略委员会(TAB)经由多番正式讨论给出,它以独特的雷达形式对各类最新技术的成熟度进行评估并给出建议,为从程序员到CTO的利益相关者提供参考。
ThoughtWorks
2018/12/13
7950
「微服务架构」Google和eBay在构建微服务生态系统方面的深刻教训
当你看到来自谷歌,Twitter,eBay和亚马逊的大规模系统时,他们的架构已演变成类似的东西:一组多语言微服务。
架构师研究会
2018/12/19
7450
推荐阅读
相关推荐
基于 DevOps 的微服务生态系统与工程实践(二)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档