导语
跟着对微服务架构的不断深入探究,越来越多的企业参加到了微服务架构中,体会微服务架构在开发、运维、测验等方面带来的优势。一起,跟着企业中落地微服务架构的案例越来越多,办理的服务、实例数量越来越大,微服务架构的一些问题也随之而来。本系列文章将经过对服务办理这一专题的蓝图描绘和单独介绍,与读者一起评论微服务办理才干在诸多场景中的实战运用。
作者介绍
崔凯
腾讯云 CSIG 微服务产品中心产品架构师
多年散布式、高并发电子商务系统的研制、系统架构规划经验,擅长干流微服务架构技能渠道的落地和施行,现在专心于微服务架构相关中间件的研讨推行和最佳实践的沉积,致力于协助企业完结数字化转型
微服务和服务办理
微服务架构大约在2011年威尼斯的一个软件架构会议上被提出,到2014年由Martin Fowler、James Lewis共同发表文章《Microservices:a definition of this new architectural term》让微服务红极一时,到今天已10年有余。
在这段发展进程中,微服务从被人质疑到成为当时云原生趋势中不可或缺的人物,从一个概念到拥有相对完善的落地系统和方法论,其中都包含着对微服务架构不断的探究和坚持。
那么,在微服务架构于企业中落地越来越多的当下,微服务架构的规划越来越大、服务和实例数量越来越多,也相应的产生了更高阶的服务办理需求。所以,服务办理逐步成为了新的重视重点和研讨方针。
TSF和服务办理
TSF作为腾讯云针对微服务架构办理而规划的渠道型产品,服务办理是渠道建造的中心价值点之一。
本实战系列主要评论范围包含TSF渠道中服务路由、服务鉴权、服务限流、服务熔断容错、服务可观测性、服务装备等服务办理中心才干(如下图“微服务结构”中所示)。
经过针对上述内容的介绍,能够系统性的协助读者了解TSF在服务办理方面的中心才干,及针对企业本身场景应怎么挑选匹配的场景和动作。如针对电商大促的场景怎么进行限流、针对灰度版别怎么进行全链路灰度发布等,协助TSF渠道运用者实际处理服务办理相关的流量管控、链路排障、装备办理等一系列问题。
\
准备动作和落地思路
在详细了解TSF服务办理各项才干之前,有几个问题需求“扪心自问”。
现在是否是引进服务办理的好时机?
服务办理并不是银弹,服务规划和流量都比较小的初创企业,适用服务办理的场景并不多。而关于一些中大型企业,服务及实例的数量、并发数及流量、DB数据量等都开始爆发性增长,服务办理才有其存在的必要性。另外,系统要基本完结微服务架构的转型,这个转型包含面向团队、办理、中间件渠道等的转变,最好也已完结容器化,这样能够借助容器渠道来提高办理功率。
引进服务办理前需求做什么准备?
开发针对服务指定办理规矩之前,还有几项作业要提前准备,包含但不限于系统调研、确认立项、安排分工。
1. 系统调研
在开展服务办理作业之前,要对系统的必要信息充分了解,需求从一线最了解的同学那里汇总,如下表示例所示:
调研事项 | 调研内容 |
---|---|
事务简介 | 简略介绍事务的功用和事务逻辑 |
运用架构 | 经过运用架构图阐述代码、模块间联系及服务间依靠等,运用的开发结构、言语等 |
物理架构 | 展现物理布置图、调用联系图 |
数据量及并发 | 描绘当时数据量及并发量的峰值、均值及怎么发展 |
当时办理方法 | 描绘当时已经运用了哪些服务办理结构、工具 |
中间件 | 限流、路由等一些办理才干需求兼容MQ、Redis等一些中间件 |
支撑渠道 | DevOps、容器渠道、监控告警渠道等 |
现存问题 | 描绘在流量操控、装备办理等服务办理方面现存的客户痛点问题 |
2. 确认立项
办理者与研制团队完结对服务办理方针、面临的应战和本钱等方面的评论,确认服务办理项目组并立项。其中,服务办理方针的确认应尽量务实,以是否处理实际问题下手,而不是“把这些高大上的办理才干都用上”。关于服务办理的本钱预估,除了选型的淹没本钱、学习本钱、开发本钱,还有要害的上线本钱,必定重视开发的review和测验的准入准出,防止开发人员和测验人员对非功用性需求“不自觉的懈怠”。
3. 安排分工
细化服务办理作业,从项目办理条线和技能开发条线别离规划。项目办理条线需求顺次确认服务办理阶段及阶段方针,将服务办理区分为各专项小组并建立接口人和汇报方法,拟定从开发、测验、投产保证、运维监控到训练赋能的服务办理落地方案,确保服务办理的功用真正能在企业顶用起来。技能条线除了完结服务办理上线所需的代码改动和发布,还需求逐步完善《服务办理FAQ》《服务办理规范手册》等一系列常识沉积,与《服务办理待办清单》共同形成迭代闭环,使得服务办理建造可继续优化。
TSF服务办理蓝图
在完结了前期的准备作业之后,需求先简略介绍一下TSF服务办理的蓝图,以便能对服务办理有个大致全面的概览。虽然TSF服务办理涉及到许多方面,但总体来说,小编将它概括为“三心两意”。
三心:一切的服务办理才干都是依据标签化管控、言语结构兼容、屏蔽底层差异三个中心来规划的。
1.标签化管控
指针对TSF服务办理各项才干针对不同的管控场景,供给了粗粒度的系统标签和细粒度的自定义标签两种管控粒度。系统标签依据TSF本身规划原语区分,如布置组、服务、运用、版别等;自定义标签依据用户本身事务属性区分,将操控粒度细化到每一个恳求上,如用户ID、时间、地域、用户类别等。经过不同的管控粒度,平衡办理的本钱和收益。
2.言语结构兼容
由于运用了不同的言语、开发结构、通讯协议,就需求不同版别的SDK、不同形状的结构对接代码、不同的调用方法,这种凌乱的形式给整个研制团队带来了巨大的负担。比如SDK晋级,首先要针对不同言语开发SDK,其非有必要针对不同开发结构做兼容,最后在晋级的时候还要和谐各个团队的晋级时机,应战十分巨大。TSF经过统一的管控渠道,一起兼容Spring Cloud、Service Mesh及Dubbo结构,兼容HTTP、gRPC等多种协议,拉平了言语、结构、协议方面的差异,让用户专心于事务本身。
3.屏蔽底层差异
TSF作为一套通用的微服务技能渠道,在各行各业都有不少落地案例。这就要求TSF有必要具有适配客户各类硬件资源、操作系统及已有架构,才干协助客户完结快速落地的方针。TSF能够适配现在干流的虚拟机、容器渠道,甚至某些场景下的物理机,国产及腾讯云自研操作系统,以及一些旧有的架构系统。经过屏蔽这些差异,防止曾经在各种渠道间切来切去的烦恼,让用户体会“同一套渠道,同一种感触”。
两意:咱们把服务办理分解为“治”和“理”两部分,以治作为装备手法,以理作为监管手法。经过自动的治和被迫的理的配合,形成办理规矩不断优化和监控作用不断提高的正向循环,让服务办理才干融入企业的研制流程中。
1.治
治是自动的办理动作,包含针对安全的服务鉴权,针对流量的服务限流、服务路由、服务熔断,针对可用性的服务容错,针对装备的运用装备、日志装备等。
2.理
理是被迫的监控剖析,包含对已运行服务指标的监控、服务间的依靠拓扑联系、拓扑链路与事务日志的联动、事务日志搜索及监控、API统一办理、各类事件的汇总及告警等。
TSF-SDK通讯机制
TSF-SDK各项服务办理才干总体上依靠了同一套架构,下图以Spring Cloud运用为示例。整个通讯进程主要包含租户端的TSF-SDK,管控端的consul接入层、服务办理组件、浏览器。TSF-SDK经过pom引证内嵌在JAVA运用中,consul接入层担任与租户端各服务的TSF-SDK连通,服务办理组件为供给各项服务办理逻辑的无状态组件,浏览器主要供办理员经过操控台页面创建各类服务办理规矩和装备。
TSF-SDK服务办理规矩、散布式装备、网关规矩等装备的实时更新,依靠TSF-SDK守时建议的长轮训机制。
TSF-SDK的整个监听进程分为两种情况:堵塞时有内容更新、堵塞时无内容更新。在服务(运用)完结注册发现之后,TSF-SDK向Consul接入层建议一个长轮询恳求,以便运用侧能够实时上报数据,一起实时接收管控端下发的规矩、运用装备等数据。当在长轮询恳求有效期内发生了办理规矩推送,那么长轮询恳求立刻回来被更新的内容给TSF-SDK;当长轮询恳求继续等候直到超过了最大等候时间,恳求也会回来,一起建议下次长轮询恳求,以防止衔接无限期等候带来的危险。
当TSF-SDK拿到办理规矩或装备后,实时更新本地内容,并依据SDK内逻辑进行服务路由、服务鉴权、服务限流等一系列操作。整体流程基本类似,仅仅下发内容和SDK处理逻辑不同。
结语
服务办理并不适用于一切场景,尤其不同的事务场景需求对应的办理规矩和参数装备,用的不好反而会成为事务的累赘。本实战系列的目的也在于此,经过深入TSF各项服务办理才干和落地场景,让读者朋友了解TSF服务办理的正确打开方法,完成构建完好的服务办理系统的方针,经过办理手法提高事务可用性,协助企业降本增效。
引证
cloud.tencent.com/document/pr…
One More Thing
近来,Spring Cloud Tencent 于6月14日正式对外开源,作为腾讯开源的一站式微服务结构,Spring Cloud Tencent 完成了 Spring Cloud 规范微服务 SPI ,开发者能够依据 Spring Cloud Tencent 快速开发 Spring Cloud 微服务架构运用。Spring Cloud Tencent 的中心依托腾讯开源的一站式服务发现与办理渠道 Polarismesh ,完成各种散布式微服务场景。
- 假如你也是 Spring Cloud 的爱好者
- 假如你的公司正在运用 Spring Cloud 并且有一些好的实践
- 假如你的公司正在做微服务技能选型
… …
请参加咱们,你的一个建议、Issue、Pull Request 甚至仅仅一个小小的 Star 都是对咱们最大的支持,也是咱们继续迭代的动力。
Github 地址(文末点击「阅览原文」即可跳转至该链接):
github.com/Tencent/spr…
扫码进Spring Cloud Tencent用户交流群