
编辑 | 徐静文
云网融合第八讲
PaaS & 微服务实践
主讲老师

邬来军
中国电信集团 高级专家
20年软件开发和项目管理经验
2014年-2016年参与集团集约化技术研发
2018年-2019年负责上海电信CRM重构项目
对于大型系统架构设计,有丰富经验

1
IT技术发展历程和趋势

一个优秀的程序员平均产出 300-500 行代码/天。
Python 在人工智能和数据可视化展现方面开发非常高效。



在极大的方便开发,提升开发效率的同时,带来了运维的复杂度以及安全的风险。
所以说,开源软件的使用必须要有合理的管控。

除了业务逻辑,还需要了解...

99.99% 高可用意味1年只有52分钟业务不可用,对团队的专业知识要求越来越高。


中间件位于客户机服务器的操作系统之上,管理着计算资源和网络通信。
中间件的作用:集成运行环境
提高开发效率
软件质量
节约成本


分布式架构
分布式架构特点:
1)规模比较大,100+台服务器
2)大量使用开源软件
3)需要很强的架构设计,考虑系统运行的高可用,扩展性,以及可维护性
4)运维是最大挑战
Hadoop,微服务 都属于分布式计算架构。


在类似“双11”的促销推广活动前后、春晚等重大活动时,流量可能出现暴增,因此互联网企业也成为基础云服务的第一波主力客户。



2003年 购买拍卖软件PHPAuction | |
2004年 学习电信,金融,采用IOE架构 |
2005年 学习ebay,系统重构采用Java技术 | |
2008年 Oracle 无法支撑系统重构自研分布式组件TDDL,Tair,Notify, |
2009年 阿里云 | |
2018年 中台战略 |
2019年 系统全部上云 |


公有云细分市场包括IaaS、PaaS、SaaS三大领域。
在全球分布格局中,三大领域份额占比分别为18.8%、12.9%、68.3%。
在国内市场分布中,三大领域份额占比分别为61.0%、7.5%、31.5%,IaaS领域是我国很大的公有云细分市场。
我国IaaS市场中,阿里云、腾讯云、中国电信、亚马逊AWS、金山云市场占比排名前五,分别为43.0%、11.2%、7.9%、6.4%和5.0%,阿里云是国内最大的云服务商,在行业中处于领头地位。

2
什么是PaaS
Gartner对PaaS的定义:
Platform As A Service (paas)是一种通过服务的方式提供应用基础设施(中间件)能力的云计算服务模式。可通过多租户或专属的方式提供,可由使用者自管理或提供者管理的模式。
根据提供服务的侧重点、领域等不同,存在不同类型的PaaS,如:
1)application platform as a service (aPaaS)
2)integration PaaS (iPaaS)
3)function PaaS (fPaaS)
4)business analytics PaaS (baPaaS)
5)IoT PaaS
6)database PaaS (dbPaaS)
7)other

阿里云是阿里巴巴集团旗下云计算品牌,创立于2009年,致力于以在线公共服务的方式,提供安全、可靠的计算和数据处理能力,让计算和人工智能成为普惠科技。作为中国最早认识到云计算价值的玩家,一直坚持自主研发之路,自助研发了超大规模通用计算操作系统“飞天”,截止2018年底,共发布了162个产品,4610个功能。经过十年发展,阿里云在中国云市场处于龙头地位。2018年11月,阿里云更名为“云智能”,在云计算的基础上更加聚焦AI智能服务。 成立十年,阿里云占据了中国公有云市场的半壁江山。2019年3月,阿里云从技术、产品、商业和生态层面提出“四级火箭”,明确“不做SaaS,被集成”的业务边界,将重心回归至底层技术、数据模块、服务支持;再通过合作伙伴的业务集成与渠道下沉,将触角延伸至更多领域;最终以标准接口的形式,提供给终端用户,从而加速阿里云生态建设,实现云计算的“大淘宝”模式。截至目前,阿里云已发布100多款联合解决方案,覆盖20多个行业大类、1000多种应用场景。

阿里作为有着 8000 多家合作者的国内龙头云计算公司,服务客户超过230万+,2018 财年中国有 40%的 500 强企业、50% 的上市公司、80%的科技公司在使用阿里云。

运营商需要什么样的PaaS ?



1、更加专注于软件层面的创造性的开发工作。根据 Rackspace Hosting 的调查,IT人员仅采用30%的时间开发,50%以上的时间用于等待系统响应和维护基础设施,这样造成开发人员时间资源的浪费;
2、PaaS 可以集结开发者智慧,减少重复性工作,产生规模效应。PaaS 平台积累 IT 开发模块,插件,模型等,使得 “代码写一次就能最大程度推广”,大幅度减少 IT 人员的基础功能模块的编写时间。

如:阿里云
如:电信集团PaaS

如何把理想变为现实
企业IT架构演进


持续集成 监控 运维
难点
1、没有统一的规范标准,形成新的“分布式烟囱”
2、故障更容易发生,故障分析和定位更加困难
3、建设容易,可持续运营困难:版本发布,性能调优…

一个故障场景

稳定性关键技术

性能的关键技术

软件复用的关键技术



关键技术
流量调度
请输入
依据系统运行的情况,自动的进行流量的调度,在无需人工干预的情况下,提升整个系统稳定。
让系统应对营销等突发事件时,在弹性计算扩缩容的较长时间窗口内或底层资源消耗殆尽的情况下保护系统平稳运行。
开发/运维敏捷化
请输入
可视化编排和查看构建过程
丰富的通知机制集成
构建过程实施掌握
故障迁移,故障恢复
系统保护(降级、熔断、流控)
全栈系统监控
请输入
全棧监控,IaaS,PaaS,SaaS
关联分析
跨系统串联
实时报警和自动处置
资源/服务调度
请输入
弹性计算
基于Docker+kubernetes技术结合IAAS层API规范的全棧式(三层IaaS,PaaS,SaaS)弹性调度和容器编排
作业和应用调度
作业工作流编排
服务编排
服务/应用治理
请输入
服务应用定义/发布
服务应用变更管理,追踪溯源掌握变更缘由,协同变更降低变更风险
服务发现
灰度发布
服务应用生命周期全管理
服务依赖关系
服务关键程度

平台标准化
流量调度
请输入
通讯协议标准化(HTTP/TCP…)
数据格式标准化(公共业务属性头)
API接口标准化(统一API规范)
开发/运维敏捷化
请输入
统一的开发规范
统一标准的CI/CD发布流程
统一标准的运维管控工具
统一的运维流程
统一的运维资源管理(分配、释放)
统一数据库设计规范
全栈系统监控
请输入
日志数据结构化
监控数据格式标准化
统一的监控平台
统一的日志分析
资源/服务调度
请输入
调度API标准化
编排引擎标标准化
服务/应用治理
请输入
标准的应用市场镜像库和服务目录
应用/服务接入、创建、运行、配置和租户绑定……标准化
应用/服务依赖定义标准化
应用/服务权限配置标准化
应用/服务状态持久化标准化

关注于整体应用的SLA
主要从为用户服务的 API 来监控并串联整个系统的监控数据。
关联指标聚合
把有关联的系统及其指示聚合展示。主要是三层系统数据:基础层、平台中间件层和应用层。
快速故障定位
故障发生不可怕,可怕的是故障的恢复时间过长。所以,快速的定位故障就相当关键。

体检
容量管理。 提供一个全局的系统运行时数据的展示,可以让工程师团队知道是否需要增加机器或是其它资源。
性能管理。可以通过查看大盘,找到系统瓶颈,并有针对性的优化系统和相应代码。
急诊
定位问题。可以快速的暴露并找到问题的发生点,帮助技术人员诊断问题。
性能分析。当出来不预期的流量提升,可以快速的找到系统的瓶颈,并可以帮助开发人员深入代码。

PaaS的特性,生动契合云网融合的目标:网为基础,云为核心,网随云动,云网融合。

价值
IT开发:开发效率和开发质量、快速交付
IT运维:集中统一运维PaaS平台,运维自主掌控,降低对原厂依赖
业务创新:应用软件开发者更加聚焦业务(屏蔽了技术架构的复杂度)
合作伙伴:对合作伙伴的控制力加强(架构的控制、工作质量和工作量的评估)
团队能力:专业化分工更细,有助于人才的培养
挑战
运维的压力
组织和分工的挑战

3
微服务架构

牵一发动全身,看是灵活,到后期无法维护和复用

真正灵活,可复用
支持场景化开发,互不干涉和影响

原则

容错设计





设计维度
从模型维度
从服务的依赖关系(高内聚):对于数据服务,不应依赖其他服务单元的服务
从颗粒度:4-8周内可以重构完成
从访问量角度(TPS QPS):访问量特别高的建议单独
从需求频繁变化程度
优点
模块松耦合,有利于快速响应开发
减少交叉影响,有利于后期的运维和优化
独立部署,维护升级影响小
有利于资源的弹性扩展,按访问量大小,按需分配资源,充分利用


如何避免大并发下,服务的“雪崩”
合理的设置TimeOut
熔断机制
快速识别异常节点,快速下线
流量自动调度
服务治理是微服务的关键能力


基于消息实现分布式事务







4
PaaS实践

集团正在进一步丰富PaaS清单,拟达31类48种。


统一数据访问层(TeleUDAL):
功能特性:
具备SQL 92标准访问数据库能力
具备高可用、自动故障切换能力
具备高性能分布式集群部署能力,支持多种数据切分方式,提供水平扩展数据能力
具备数据路由、数据汇聚屏蔽分库分表差异能力
具备数据读写分离策略,支持数据库双主多从,以及一主多从模式
具备SQL安全、运维监控、配置管理等整套配套功能
关键性能指标:
单机平均性能:~ 11w TPS(4路8核,512GB内存,万兆网卡)
单机平均并发数:~ 3000
集群能力扩展系数:0.7
数据高可用(TeleDB) :
功能特性:
具备关系型数据库功能,可替换如Oracle等关系型数据库
具备故障自动切换功能,在主库发生故障时及时切换到从库保证高可用
具备高性能、高一致性的数据强同步方案
具备读写分离功能,提高数据并发访问能力
具备数据备份、运维监控管理等配套功能
关键性能指标:
达到Oracle性能的 90% 以上
单机支撑并发数 > 500
纯插入:TPS > 1.2w
读写比例10:1情况下,主从延迟99%以上时间小于1秒
主从延迟小于1秒的情况下,高可用切换时间小于2秒

技术特性:
基于Redis数据服务,提供多协议API 缓存服务接口;
采用多租户管理模式, 提供多样化的数据服务能力及数据故障隔离;
采用统一接入层方式,对海量并发有效控制,保障平台稳定性;
缓存数据自主更新维护,提供数据库与缓存间的数据自动同步;
支持在线实时扩容,满足业务不断增长的缓存数据存储需求;
支持实时故障检测、故障通知、故障切换;
性能指标*:
单机1k平均性能:~ 35w TPS
单机平均并发数:~ 10000
单机建议启4~6个实例
集群能力扩展系数:> 0.7

技术特性:
消息点对点、发布/订阅、顺序消息,能保证消息的严格有序
消息堆积,不超过内存大小时无性能影响,超过内存大小时写入磁盘时,影响小于10%
API 封装,针对电信应用特点进行封装,屏蔽无关细节
Java, C++客户端,解决开源产品只支持Java的限制
事务消息机制,提供分布式事务的最终一致性支持
性能指标*:
高可靠保障模式,单主备TPS 2.5(万条/s)
高可靠保障模式,单机最大TPS 16.7(万条/s)
高性能模式,单机最大TPS 31.7(万条/s)
亿条2k大小消息堆积,生产消费性能影响<10%
集群扩展系数 = 0.92

PaaS平台,包含面向应用开发的一系列组件(19),以及面向开发和运维的平台能力。
微服务、容器、DevOps等云原生的关键技术均封装在PaaS平台中。
PAAS平台采用多租户模式,为租户的应用开发和应用运行提供统一的开发技术规范和中间件和运行环境.不同租户之间可以支持灵活的资源共享和隔离。
PAAS平台采用分布式架构设计,提供应用运营所需的各类中间件服务以及流量和计算资源的调度,保证应用的快速伸缩性和高可用性。


通过分布式微服务方式构建中台共享服务,提升服务的可复用度和灵活性
提炼和沉淀共性业务服务,为门户和应用提供可直接复用的共享服务,快速支撑前端需求
各应用中心采用小团队开发模式,开发运维一体化,提升团队成员能力全面发展
分中心+小团队模式更加聚焦业务,更有利于实现业务和技术创新。


1、参考SCRUM敏捷开发和CMMI规范等软件工程标准规范要求,结合产品部实际情况,剪裁定制软件开发规范,形成文档标准规范
2、积累和沉淀项目文档,形成知识库
3、支撑敏捷开发,快速迭代

分工与合作,规范管理,高效协同。


服务开发框架是面向研发人员,实现服务的基础。

服务开发框架的需求:
提供模板工程,统一技术路线,减少工程依赖问题;
降低分布式研发难度,提升研发质量
实现应用和开源软件的松耦合
提供自动化代码生成工具,减少重复性工作,专注于创新;
配合不同粒度组件,快速实现业务逻辑,响应用户需求;
需要支持多种微服务框架,满足不同应用的需求
目标:实现服务可监控,可管理,可扩展,高可用,故障自动隔离,自动弹性伸缩















分布式数据库、缓存、消息等组件

容器集群多租户模式




给软件运维带来的变化
通过北向接口统一,大幅提升了软件系统的可监测,可管理能力。针对运维,可不断研发自动化工具,持续提升效率。
全栈监控,保障业务持续稳定
业务端到端监控、自动化秒级处理
先于用户发现问题、先于报障解决问题

日志可视化分析,实现高效运维
从日志文本的逐行查看,到可视化分析
快速定位故障

自运维工具,保障开源软件可用性
针对开源软件在功能性和软件缺陷方面,研发对应的自动化运维工具,保障开源软件的可用性。如:
模型比对分析工具解决在分库分表场景下,模型变更后检查各数据库实际模型结构,是否一致;数据闪回工具解决数据批量误操作后,数据回滚和修复。

给持续迭代能力带来的变化
微服务“高内聚、松耦合、数据自治”的特性,带来了系统快速迭代的能力。

蓝绿环境交替升版
灰度营业厅引流,在线验证
分钟级的发布与回退
PaaS平台组件的升级对应用无感知
给业务承接速度带来的变化
模型和主数据统一提升业务快速承接能力
CRM内部模块模型统一的效果
缩短建设周期。进行积分重构时,部分模块融入到客户、营销资源、营服等引擎,基本服务与管理功能进行复用,缩短了建设周期。
数据统计与稽核。提升数据的统计、稽核效能。基于统一的模型语言、主数据语言。
CRM与计费模型统一的效果
提升数据一致性。提升系统间交互信息一致性。避免通过业务订单交互导致的逻辑问题。
与集团模型、主数据统一的效果
提升两级业务承接效率。加快CPCP产销品加载速度;提升两级交互业务承接与运维效率。
提升各渠道业务受理效率。统一各渠道业务受理流程;加快业务受理能力。

重构前:各应用都有自己的库和模型,各应用直接连接数据库,同样的概念在各个模块里可能都有一套,且互相定义不同。数据实体的扩展不受控制,从根本上产生了“烟囱”
重构后:基于统一的PAAS底座,统一数据模型,将相同概念的数据进行归并整合,并统一对外提供一层数据服务。应用不再与数据库直接交互,而是通过数据服务来实现应用逻辑。
给开发运维模式带来的变化
DevOps理念落地,实现开发运维一体化闭环管理。

统一的项目过程管理门户
CRM域18个引擎,每个引擎都人员规模10人左右,利用统一的项目过程管理工具和平台提供的统一的运维工具实现开发运维一体化。
PaaS开发团队负责PaaS平台功能的开发和日常运维,根据日常运维需求和开源软件存在的缺陷导致的故障进行监控功能和自动化运维工具等功能开发。
开发运维一体化的优势:解决了人员能力均衡发展,开发人员熟悉代码便于快速故障分析和处理。

形成了基于云化架构的运维分工标准
在实践中磨合,
完善运维流程。

PaaS层
PaaS组件部署、扩容、升级等实施运维工作
PaaS组件巡检、备份、日志清理等日常运维工作
PaaS组件问题 / 故障支撑及处理
PaaS组件应急演练
PaaS组件安全修复
操作系统安装、维护、升级等
操作系统安全修复
PaaS组件资源开通、变更
制定PaaS平台告警策略,接收并处理平台告警
PaaS组件性能调优、运营分析
重要数据库DDL、DML操作
SaaS层
版本上线、扩缩容、模型变更、应用配置、数据操作等日常应用运维
应用性能分析优化
应用安全扫描与加固
制定应用监控告警策略,接收应用告警,并初步处理
生产环境问题和故障初判分析,如果是平台组件问题上报给平台组
组件问题反馈
IaaS层
服务器(设备维修、巡检、故障处理)
机房内部网络(设备维修、巡检、故障处理、网络开通)
机房间网络(设备维修、巡检、故障处理、网络开通)
机房环境(电源、空调等)
网络安全
制定服务器、存储、网络的告警策略,接收并处理相应告警
资源申请流程
故障处理流程
日常运维支撑

形成了PaaS平台
开发与运营的闭环流程


持续优化从资源申请,到开发,测试,版本发布,日常运维,告警处理的运营流程和支撑体系
培养了一支PaaS平台运维团队,通过自动化运维工具有效提升运维效率,有效保障平台稳定运行
自研微服务开发框架,统一开发规范,提升开发效率和开发质量,培养自主可控研发能力

发布效率提升
流水线全自动发布
单个服务构建发布
耗时:<5分钟
可用性提升
服务异常自动重启
灰度发布线上验证,秒级切换版本
高性能支持与闭环反馈
扩展性提升
可扩展的微服务架构
资源按需分配
弹性伸缩,秒级伸缩生效时间:<30秒
可视化运维
已配置主机、中间件、应用告警策略共:242条
多维故障诊断支持:访问量+调用链+日志
50+可视化运维看板

是不是感觉了解了很多新知识呢,这次没有课后习题哦,大家可以上微学院观看邬老师的视频课程更好的汲取课堂知识哦~
微信扫一扫下列二维码
登陆微学院账号立即学习

登陆微学院APP
输入账号密码
或手机账号登陆

往期课程

第一讲
我们为什么要云网融合

第二讲
什么是云网融合

第三讲
浅谈云网融合

第四讲
利用云网融合可以做什么

第五讲
为什么说5G
是云网融合的最佳实践

第六讲
大型互联网网站云网架构

第七讲
云原生软件架构介绍


















