欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~
演讲者:张浩 腾讯云中间件产品负责人
背景:众多开发者中,一定经历类似的甜蜜烦恼,就是当线上业务规模越来越大,系统分支发展越来越多的时候,初期上线的成就感很快就会被系统间数据不兼容、不通畅,折磨得精疲力尽,每次模块更新都是牵一发而动全身。腾讯云微服务框架TSF就可以为大家解决数据孤岛以及重复造轮子的问题,提供了简洁易用的代码入口,将复杂的底层网络、服务器部署接口化,使开发者更易用。
本文整理自腾讯云中间件产品负责人张浩在腾讯云云+未来峰会上的分享内容。
大家下午好!我是来自腾讯云中间件产品负责人,我叫张浩。很高兴今天能来到广州这样一个工业、金融、制造等非常发达的城市,和大家分享腾讯云微服务的一些实践。
刚刚前一个主题的负责人邹辉是腾讯云 PaaS 产品总监,可能已经讲了很多DevOps和微服务结合的理论和落地的工具,我是接着详细讲讲腾讯云,除了容器、DevOps工具以外,在这以上我们抽象出来的一套叫做TSF的平台能够帮助开发者解决什么问题。
首先就微服务这个概念,我自己的理解,把它简单用一句话来讲,传统的冗余、耦合的IT架构,我通过一些互联网手段和工具,把它解耦成为单独的耦合的微服务,这样开发团队可以拥有独立的技术站,快速迭代做一些小步快跑和升级,这样很好的应和互联网时代,做一些业务上的创新。但是往往运营总监下决心做微服务并不是最艰难的,往往是我们做了决定之后,可能团队整个公司的价值观还有很多领域跟不上,比如说我们采购了非常多的像传统的硬件和设备,买一些总线服务,比如说工业开发者尝试用完全开源的产品搭建自己的生态系统,发现有很多线上的问题解决不了。腾讯云推出了TFS的微服务平台,它的目标是类似于乐高积木式的工具和平台,去协助我们所有的开发者更加聚焦业务的开发,让大家的精力聚焦在做业务逻辑的开发和上线,而不是去造轮子开发工具。
TFS的能力介绍我分成两部分来讲,一部分是面向开发者的能力,一部分是面向运维。
先讲开发者的能力,腾讯是用一种非常开放包容的心态和社区结合,一起参与这个事情,腾讯目前在参与比较深入的是在spring Cloud的微服务框架里,在场的开发者我来之前看一下,有很多java的开发者,对这个社区应该是非常熟悉的,腾讯在spring cloud有非常深入的迭代和对这个技术的贡献,最大的一个特性就是一个spring cloud的商业版,解决了社区里面无法解决的问题。其次,在TFS这个平台上,像一些java的开发者,用spring做开发的话,在兼顾平台过程中也是非常的便利,非常方便,腾讯云这一块还整合了腾讯内部的一些中间件的产品,包括消息队列、API网关、等一些中间层服务,让开发者在微服务开发过程中不需要去选择复杂的云的API,直接在云服务器来的时候拉取运用,这是我们在这方面的实践。还有一个词很火叫Service mesh,可称为微服务的3.0时代。
腾讯将在6月份左右推出我们自己的Beta版本,Service mesh在一些异构系统,在多语言开发者的情况下,能让不同的开发者更加聚焦自己的业务逻辑,把服务之间互相访问、发现复测、覆盖均衡、降级服务等等都交给服务网格去处理,会更加聚焦。
第二部分的能力,我们讲微服务,我们讲服务框架,腾讯基于spring提出了新版本,在这个注册中心加入了自研算法,我们做到在深圳和广州的双城机房里可以做愈合,一旦一个机房中心挂掉了,我们可以跨机房做一个服务发现,注册和访问。我们的服务框架在协议的支持方面也有比较丰富的支持,有基于RPC的高性能框架,传统设备私有协议也会兼容。
面向开发者的第三部分的能力,腾讯云提供非常全面的从逻辑到物理上的资源隔离、生产测试、预发布能力。作为现场的开发者或者架构师,在做微服务设计过程中,第一部分是要怎么样划分基础资源的计算、网络、环境的资源问题,第一步要把我们购买的物理机、虚拟机等等服务器资源要利用起来,同时在构建DevOps的测试构建过程中,不能出现一些服务抢占、资源抢占甚至是更严重的事故。所以基于这个空间,我们提供了很好的生态环境和云测试环境的隔离能力。
TSF这个平台是和tencent hub是无缝连接的。接下来第四部分是我面向开发者要介绍的是分布式事务,这个事情在这几年会得到越来越大的关注,怎么理解呢?现在有非常多的互联网业务是跨公司的,我上周才刚见了客户中石化,我去加油站加油,四百块钱一箱油加了之后要买单,经常会出现四百块钱的结算是首先在加油站的支付网关有优惠券做减免,其次在微信支付的网关做一次结算,最后微信支付的背后,关联了农行的信用卡,我要做第二次的折后结算,大家就会发现,我作为开发者要满足这种前端运营团队给我提的复杂运营活动,我在IT层面要做非常复杂的一次性处理,怎么解决?特别是这种中石化,微信支付和农行的结算网关的数据库都不在一起,是跨公司,腾讯基于TCC的分布式事务的规范,推出了自主知识产权的分布式事务平台,去满足这种非常复杂的跨公司、跨部门的事务管理能力。
接下来的能力是讲讲微服务的网关服务。这个公安网关也非常重要,经常我们的微服务开发者会有几个常见的诉求,第一个我可能是一个大的央企,下面有各个子公司,A部门和B部门互相的业务调用,就会发现是跨机房的,可能是跨网络的,怎么样把我后端的服务安全可靠的暴露出去,让我的合作团队进行调用,这是第一个层次。第二个层次,我怎么样定义一个API的契约,从上至下的开发团队怎么定义好API的规范,微服务的网关是能做好这些事情,能让开发者在做服务调用过程中,无论是网络以内的还是跨网的都可以做到一致。
在公网关以外我们还做了提供服务总线的能力,在做微服务过程中,其实有好大一部分的客户群体是来自于传统客户,比如像政府、烟草、海关等等客户,他们会有这么一些特殊需求,他需要你的网关能力增加一层逻辑能力,比如说最近广东省政府省厅的项目,他需要一些敏感接口,在调用过程中可能要增加一些逻辑判断,增加一些线下审核、流程审核,通过之后才对外开放的能力。腾讯云在面向传统市场我们也做了非常多的努力,在网关这一块增加了逻辑判断。以及网关上调用的方式,我们是以消息队列的方式,一对一,一对多的消息发送方式,去满足服务调用的场景。
刚刚讲了很多面向开发者的能力,我们现在讲讲面向运维的能力。TSF有一个非常强大的,让我非常自豪的体系叫TSF的生命管理周期平台,第一是解决开发者把微服务的配置做一个集中管理,这个配置在微服务里非常重要,腾讯在每年也有像双十一游戏业务,会有大量的弹性伸缩的场景,业务波动性非常大,这样运维的同学经常要做预案,比如说我可能要做一些接入层、逻辑层,后台在遇到大流量的时候要做降级服务,避免具体的某个节点的热点访问,导致整个后端系统全线瘫痪,我会做这个预案,当触发的时候我可以做配置变更来达到这些效果。而且在一定程度上能做到不需要重启计算节点。第二部分能力,我们有能力在分钟级别里面快速启动上千个服务节点,来应对突发的流量。
面向运维的同学,我们有一套非常完善的全链路智能的平台,讲微服务最抗拒的可能是运维的负责人,为什么?你看我们的运维同学是怎么解决问题的,最简单的,出现问题登到一台机器上看端口,哪里有问题解决哪里的,一查就完事。微服务通常是一个中间经历了数十个环节,我可能看到前端的APP点一个按纽,到底哪里出现问题就非常痛苦,怎么定位非常痛苦,现在传统的做法是我在每个节点上抓一些日志下来来处理,这个时间是非常长的。腾讯TSF这个平台做了一个事情,我们参考了谷歌的分布式日志论文,我们会打入一个 trace id,我们会把服务节点上散乱的集合在一起,这样可以以事件的方式去看具体某一个事件,可以清晰的排查。这一块的能力是我们面向运维同学做的友好的能力。
我不再赘述里面的功能,接下来五分钟时间我跟大家讲讲微服务平台解决了哪些问题,落地了哪些案例,带来哪些价值。首先我讲讲公司财付通的案例,财付通有一个交易订单层,这东西是支撑腾讯包括手机QQ以及微信支付一些像红包等等热门应用的核心逻辑层,像风控、订单处理都在里面,TSF平台给它带来什么价值?
首先基于TSF平台做了一个微服务化,通过我们运维平台能力,协助财付通的负责人去梳理整个IT架构,比如说我可以把非关键的调用路径异步化,除夕那天晚上,A给B发红包,12点的时候会出现系统繁忙,钱是发出去了,但是余额的更新不是实时的,这里面做了一个逻辑,把余额更新这个点他认为是可以作为一个降级处理,你余额更新慢一点没关系,只要你的钱能发出去就好了,大家都很开心。所以通过这一点让非关键路径做了异步化,让财付通的吞吐性能得到很大提升。第二,财付通的弹性是非常大的,如何保证一些大型活动,比如双十一活动来临的时候,能够及时扩缩容,平时也能节省一些闲置的服务器呢?我们的生命周期管理平台就很好的管理。
第二个案例我想讲讲永辉超市,跟腾讯是深入合作伙伴。腾讯开始跟一些零售企业做新零售,新零售带来什么价值?无非是从人货场这三个地方来看。人的话,线上线下支付体验能不能得到提升,场地的话作为零售的商家,它的管理,门店效率能不能提升,还有货物,商家能不能做到智能选品,选择的商品能让消费者喜欢,怎么样降低库存,提升流转。在座所有开发者能感受到的是永辉超市推出了像人脸支付这种非常新颖的APP业务方式,或者是像一些生鲜,买肉买鱼可以给你送到家这种新颖的零售应用。但是做到这一点是非常非常不容易的,腾讯跟永辉超市在过去的半年时间,整合成了一个攻坚的云的建设团队,从底层的IaaS开始,一步一步搭建,中间这一层非常关键,叫做零售业务中台,这个中台承载了永辉超市在IT化里面最关键的逻辑,比如说它的一些对商品质量的管理、支付的管理,所有的这些大的核心平台都进行了微服务的改造。做微服务的最大价值就是让团队更加敏捷,为什么要敏捷?就是因为要支撑前端的项目,人脸识别、生鲜到家,所有的应用会给后端的中台提非常多IT的需求,现在能达到的点是两星期能发一个版本,在场可能互联网开发者可能会觉得15天还可以,不是很了不起,但是传统领域15天一个版本确实是惊人的速度,这是腾讯云给永辉超市带来的最大价值。
最后一个案例是银行,甲方不允许我把姓名透露出来,所以我没有贴LOGO,这是腾讯云技术团队跟金融团队以及这家银行做的网贷业务,有点像微信的微粒贷,通过智能手段快速审批个人信用情况,快速把钱给你放款的业务。这里我想强调,我不会讲网贷业务的具体情况,我会讲做微服务很多过程中会遇到的点,甲方会问我,你们干DevOps,干服务,是不是要把原来的都干掉,其实并不是这样,其实并不会有一个项目把老的彻底重构,常见的是新的业务或者是一些带互联网属性的业务,我们会尝试有微服务的平台去承载,去跑起来。老的业务系统怎么办呢?第一个问题要解决的是通信的问题,腾讯云这边的网关能力,我们会做非常多传统硬件兼容,我们去做这些协议的兼容,通过兼容之后会把原来的大的硬件作为大的微服务的子体系,把它可以访问到我们的服务框架,服务到注册中心,这样可以做非常轻力度的服务治理,至少保证你的业务是可以访问的。
当新的系统和老的系统有一个打通之后,可以互访之后,第二阶段就做更进一步的重构,协助做落地细颗粒度的服务治理,service mesh能力的点,我们把原来的能力通过service mesh的方式做重构,这样从老到新有一个非常好的过渡过程。最后这些是我们平台在面向一些传统行业,比如像工业、零售、能源、交通领域有非常多的落地实践,我也希望今天在场的合作伙伴能一起跟我们把微服务这件事做好,谢谢大家。
更多相关资料,请点击下方链接获取:
日调度万亿次,腾讯TSF微服务平台最佳实践.pdf
问答
微服务架构:跨服务数据共享如何实现?
相关阅读
微服务调用链追踪中心搭建
如何从传统单体架构转向微服务
云存储:面向企业的7项必备功能
此文已由作者授权腾讯云+社区发布,原文链接:https://cloud.tencent.com/dev...
欢迎大家前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~