赵成的运维体系管理课
赵成
《进化: 运维技术变革与实践探索》作者
37829 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
开篇词 (1讲)
效率和稳定性最佳实践 (20讲)
赵成的运维体系管理课
15
15
1.0x
00:00/00:00
登录|注册

04 | 标准化体系建设(下):如何建立基础架构标准化及服务化体系?

F5
Apache
Nginx
LVS
RocketMQ
ActiveMQ
RabbitMQ
Kafka
TiDB
Sharding-JDBC
淘宝TDDL (DRDS)
MariaDB
MySQL
Redis Cluster
Codis
Memcached
Redis
Spring Cloud
Dubbo
基础架构的服务化平台开发
参与制定基础架构标准
服务化过程是PaaS化的过程
微服务架构引入初期的问题
开源产品的选择困难
自研 vs. 选择开源产品
前端接入层部分
分布式的消息中间件
数据库及分布式数据库框架
分布式缓存及框架
分布式服务化框架
运维的职责
基础架构的服务化
基础架构组件的选型问题
常见的分布式基础架构组件
基础架构标准化的重要性
基础设施和应用的标准化示例
标准化的套路
为什么要做标准化
基础架构的标准化和服务化

该思维导图由 AI 生成,仅供参考

前面我们一起讨论了为什么要做标准化,标准化的套路是什么,并按照套路进行了基础设施和应用的标准化示例。我想这些内容可以帮助我们举一反三,尝试着应用到实际工作中了。
今天,我继续跟你聊基础架构标准化的问题,但是今天我计划不谈如何进行架构标准化的细节,而是想强调一下基础架构标准化的重要性,因为从我个人的经历和我实际观察到的情况来看,这块的问题会更普遍一些,而这一部分又影响着后续一系列效率和稳定性平台的建设方案。
同时,如果说上次我们讲的基础设施和应用标准化是运维团队职责的话,那今天的内容就是架构、开发和运维共同的职责。

常见的分布式基础架构组件

让我们先一起列一下,微服务的分布式架构下,涉及到的主要基础架构组件有哪些。
分布式服务化框架,业界开源产品比如 Dubbo、Spring Cloud 这样的框架;
分布式缓存及框架,业界如 Redis、Memcached,框架如 Codis 和 Redis Cluster;
数据库及分布式数据库框架,这两者是密不可分的,数据库如 MySQL、MariaDB 等,中间件如淘宝 TDDL(现在叫 DRDS)、Sharding-JDBC 等。当前非常火热的 TiDB,就直接实现了分布式数据库的功能,不再额外选择中间件框架;
分布式的消息中间件,业界如 Kafka、RabbitMQ、ActiveMQ 以及 RocketMQ 等;
前端接入层部分,如四层负载 LVS,七层负载 Nginx 或 Apache,再比如硬件负载 F5 等。
上面是几类主要的基础架构组件,为了便于理解我以开源产品举例。但在实际场景中,很多公司为了满足业务上的个性化需求,会自己研发一些基础组件,比如服务化框架、消息中间件等,这个情况在有一定技术实力的公司里比较常见。不过大部分情况下,我们会基于这些开源产品做一些封装或局部的改造,以适应我们的业务。

基础架构组件的选型问题

关于基础架构组件,业界可供我们选择的解决方案和产品非常多,但是选择多了就容易挑花眼,反而不知道从何入手。我们大概都会遇到同样的问题,是自研还是选择开源产品?有这么多的开源产品到底该选哪一个?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了在微服务架构下基础架构的标准化和服务化对于运维工作的重要性。首先介绍了常见的分布式基础架构组件,包括分布式服务化框架、分布式缓存、数据库及分布式数据库框架、分布式消息中间件以及前端接入层部分。随后探讨了基础架构组件选型问题,强调了对基础架构的统一规划和建设的重要性,提出了基础组件只允许一种选型的原则。文章还详细介绍了基础架构服务化的重要性,以及将基础架构组件服务化的过程即PaaS化的过程。运维的职责被归纳为两步:参与制定基础架构标准并强势地约束,以及基础架构的服务化平台开发。强调了运维必须有意识地参与基础架构标准化和服务化,并提供了具体的行动步骤。总的来说,文章强调了基础架构标准化和服务化对于提高效率和稳定性的重要性,为读者提供了深入了解和思考的内容。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《赵成的运维体系管理课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(16)

  • 最新
  • 精选
  • 赵成
    置顶
    本篇的重点,标准化的目的是为了更好地提供服务,而服务化又是标准化的技术落地形式。
    2017-12-29
    28
  • 宵伯特
    亦如编程的过程就是了解工具掌握工具规范化使用工具的过程,编程中的自由并非为了达到目的就可以胡作非为,而是在一定的约束下,通过有限且有效的步骤来实现业务逻辑,而这些约束或者是编程范式,或是设计模式,或是代码规范,总之想要提升效率就需要制定标准规范,遵守契约,以流程化,标准化的方式进行高效的协作。在架构中规范协议,制定标准,避免过多精力耗费在组织之间的协作沟通上,从而提高研发效率。

    作者回复: 优质评论!赞

    2017-12-28
    14
  • 付盼星
    服务化也是运维能力的输出,当然它的核心目的是标准化的落地。

    作者回复: 讲的很好,不过我觉着反过来理解会更好,标准化是手段,运维能力输出是目的。

    2018-03-04
    4
  • 白开水
    正在梳理公司的运维标准及规范。公司以前也有,就是比较零散,现在发现缺乏一个方法,把这些零散的文档串起来。就是说,希望能找到一个方法,能整理出我们需要哪些标准规范,具体要求是什么。缺少的,我们补充;不达标的,我们完善。请问有什么建议吗?

    作者回复: 从你实际的运维对象出发,应用,服务器等等,这个需要你去识别,同时后面几篇文章也可以看看,有介绍从生命周期的角度入手的套路。

    2018-01-06
    4
  • 牧野静风
    基础架构的服务化平台开发,目标是平台自助化,让开发依赖平台的能力自助完成对基础组件的需求,而不是依赖运维的人,这里需要运维要有强大 的研发能力,这块需要哪些技能呢

    作者回复: 要理解整体的技术架构,技术栈要跟业务技术栈尽量统一

    2019-07-22
    2
  • james
    不知道用java技术栈能否开发出您说的这类运维平台,而无需为每个被管理对象安装一个代理,比如:开机关机,当然是针对虚机或docker,还有控制redis的启停啊,rabbitMQ的启停啊,当时的消息的消费情况什么的,等等,相信这个团队要有相当的技术实力,比如阿里云的所有服务都通过网页可以操作

    作者回复: 语言不重要,关键是理清需求和架构,各个公有云平台其实提供了很好的借鉴。 技术实力是一方面,确实需要积累,只能一步步来

    2018-03-09
    1
  • 林柏
    关于基础架构标准化的理解,个人并不赞同文中的观点。鉴于作者在行业的影响力较大,不希望偏颇的观点被广泛传播,激化开发与运维的矛盾。在此,表达个人的观点。希望辩证讨论。 分歧不在于:是否需要标准化?当然需要标准化; 分歧在于:什么是标准化?如何标准化? 第1种理解:文中理解的标准化是选型。既基础框架、中间件、消息队列、缓存的选型;比如:文中提到的尽可能选择一款关系型数据库mysql,而尽量不要选择oracle/sqlserver/ mariadb等;再比如:微服务框架选择sprint cloud,而非选择dubbo、istio等。 第2种理解:而我个人理解的标准是接口标准化。不是限制了中间件的选择,而是运维可以对微服务框架、数据库、消息队列等运维对象,定义服务管理的接口(API),不同的中间件适配运维的API。例如对于微服务框架,定义服务启停、扩容、缩容、限流等API,开发团队可以采用不同的微服务框架(dubbo、sprint cloud、istio等),但采用的框架,必须开发API适配模块,对接运维的自动化。 之所以标准化,应该是第2种选择,基于现实情况的考虑: 1)应该包容应用的多样性,在绝大部分的企业中,应用是多样的。自研的系统、外购的系统、合作开发的系统,加上不同团队的技术栈不同,采用了多样的中间件。不能说,你这个应用没选择Mysql,不满足标准化要求,另一个系统采用了dubbo,而不是sprint boot,也不满足标准化要求。不满足标准化,所以不归运维管理,需要应用去改造,这是非常不合理的。 2)所有的框架、中间件等开源都在快速的发展。以微服务框架为例,典型的有dubbo、sprint cloud,而当前service mesh快速发展,istio、Envoy等进步迅猛,消息队列从kafka到pulsar等发展迅速。开发团队经常因为标准化的问题,跟运维团队发生矛盾。 因此,请作者慎重的思考标准化的规范,特别是文中“参与制定基础架构标准化,并强势地约束”观点。从哲学的角度看,统一性与多样性需要找到一个平衡。另一方面,标准化基于接口(API)更加开放,而非是排他性的选型。
    2022-02-19
    7
    11
  • 技术修行者
    我们目前做的大部分工作就是基础架构组件的服务化工作,感觉基础架构组件的标准化工作大部分是一带而过的,并没有形成很强的约束,这也造成了虽然服务化的工作做完了,基础架构组件也通过API对外提供服务了,但是在运维层面,会收到业务方各种各样的需求,每天都要花很多精力在处理这些事情。 举一个不是很恰当的类似,标准化的过程是一个设计的过程,服务化的过程是一个实现的过程。没有进行充分的设计,就去实现,到最后会发现各种问题。 标准化的过程,有2个建议: 1. 标准化并不是一个团队就可以搞定的,必要的时候,需要把业务方拉进来一起讨论,毕竟最终的需求是业务提出来的。 2. 标准化完成后,一定要及时发布给所有业务方,并标明服务的各种约束,这样业务方在做技术选择以及技术架构设计时,也可以充分考虑哪些能力是基础架构组件服务可以提供的,哪些是不能提供的,从而避免了后面吗不必要的扯皮。
    2020-05-27
    5
  • 怀揣梦想的学渣
    看了文末总结运维的职责,这是否可以理解为,运维应当掌握与开发人员相差不多的编程能力,并且还要积累相对多的对业务的理解,才能满足标准化以及基于标准化推动自动化时,对人员能力的基础要求。
    2022-02-07
    2
  • 青椒炒肉丝
    对象、属性、对象之间(应用与资源、应用和应用)的关系、针对对象的运维场景。 基础架构标准化(研发和运维共同的责任)。 基础组件架构统一。(如用业务的数据库类型种类) 技术选型(开发语言,统一的开源组件) 基础组件的服务化(建设paas平台,场景化自动运维) 运维的职责。 参与制定架构标准,并对标准强制约束(运维研发配合)-> 效率提升 paas平台开发,目标是平台自助化。解放运维对基础组件的维护。
    2023-04-20归属地:浙江
收起评论
显示
设置
留言
16
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部