导语
2022腾讯全球数字生态大会已圆满落幕,大会以“数实创新、产业共进”为主题,聚焦数实融合,探索以全真互联的数字技术助力实体经济高质量发展。大会设有29个产品技术主题专场、18个行业主题专场和6个生态主题专场,各业务负责人与客户、合作伙伴共同总结经验、凝结共识,推动数实融合新发展。
今年6月,腾讯宣布内部海量自研业务实现全面上云,成为国内最大规模的云原生实践,累计节省IT成本超过30亿元,充分显示腾讯云的产品、技术和综合服务能力。
云原生技术在云计算 PaaS 的应用已经迈入深水区,腾讯云微服务和中间件产品基于客户业务落地实践,在产品能力、可用性和可运维性等多个方面进行了深入的优化和落地。本次大会设立了微服务与中间件专场,本专场从产品研发、运维等最佳落地实践出发,详细阐述云原生时代,企业在开发微服务和构建云原生中间件过程中应该怎样少走弯路,聚焦业务需求,助力企业发展创新。本篇为微服务与中间件专场第一个演讲议题的干货集锦,欢迎大家收看!
本文将从以下五个方面展开,对微服务架构下路由、多活、灰度、限流的探索与挑战进行深入解析。
1、微服务概述
2、测试阶段最佳实践
3、发布阶段最佳实践
4、生产阶段最佳实践
5、微服务架构总结
微服务概述
企业架构演进之路
应用层
最早的应用架构,也就是IT系统通常都是一个单体架构,随着技术的发展与进步,出现了 SOV 这种面向服务的架构,一直发展到现如今,最流行的架构就是微服务架构。
单体架构:
- 紧耦合,系统复杂,牵一发而动全身
- 重复制造各种轮子
- 完全封闭的架构
SOA架构包括接口层、逻辑层和数据层:
- 通常通过 ESB 进行系统集成,松耦合
- 需要集中式、计划内停机扩容或更新
- 团队庞大,沟通成本高
微服务架构:
- DevOps: CI/CD, 全自动化
- 可扩展性:自动弹性伸缩
- 高可用:升级、扩容不中断业务
资源层
随着应用层的发展,资源层的发展也随之改变,对应单体架构的时候,大家都还是 IDC 基础设施,这是第一阶段;到了第二阶段,大家开始慢慢上云,就有了云计算与虚拟化技术;到了第三阶段,大家开始探索怎么去做容器化;随之到了第四阶段也就是现在,大家又开始探索怎么去做 Severless 无服务器的这种方式。
企业架构演进下的挑战
到了微服务架构之后,大家又想要去实现更多的场景,比如 Devops、架构的可扩展性、架构的高可用以及多环境路由、发布等,接踵而至的就是层出不穷的挑战。
如何做流量路由?
如何保证多活容灾?
如何实现金丝雀、蓝绿发布?
如何实现全链路灰度?
如何扛住流量洪峰?
接下来,我们就探讨一下在以上挑战之下的微服务实践。
测试阶段微服务的实践
测试阶段:解决多测试环境的流量路由问题
痛点
微服务系统中,在开发测试时,如果有多团队同时开发,或者多系统需要联调,每次都需要部署全量服务来进行测试。如何做到仅部署本次有变更的服务,其他服务通过流量动态路由的方式复用基线环境服务资源,成为这种微服务测试阶段的一大痛点。
目标
1、节约资源成本,开发/测试按需申请,用完即弃;
2、提升研发效率,摆脱大量的本地化配置的工作;
3、实现跨环境的联调,不用争抢不同的测试环境。
为了实现这个方案,需要用到微服架构里面的两个组件,一个是入口层的网关,另一个是服务治理框架例如服务网格等。
如何实现呢?
如下图所示,在测试环境里面通常会有多个环境,分为基线环境和特性环境,在测试的过程中,团队1想要去测左边蓝色的特性环境,团队2想要去测右边绿色的特性环境,这个时候就可以通过服务治理的框架来实现。
实现方案
1、实例打标
K8s注册场景:在workload上通过添加annotation打上环境标签。
微服务框架注册场景:对服务下所有实例进⾏分组,通过标签能够区分部署的环境。
2、流量染色