前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系统优化与微服务架构、分布式架构的合理性思考

系统优化与微服务架构、分布式架构的合理性思考

原创
作者头像
粲然忧生
发布2022-09-05 16:56:57
5470
发布2022-09-05 16:56:57
举报
文章被收录于专栏:工程师的分享

最近读了《混沌工程》一书,除了对混沌工程这门学科的知识点进行学习外,针对大型的分布式系统的管理也有一些想法

这里摘录一些比较好的观点,部分会与社会管理进行了类比,这里供大家参考:

软件工程师通常会对三个方面进行优化:性能、可用性、容错能力

(一)性能:特指使延迟或资源成本的最小化

1. 所谓延迟:即服务的实时性,解决思路如下:

(1)纯数据类型的处理可以使用大数据引擎的实时计算

(2)文件等复杂类型的逻辑处理可以通过减少处理环节(kakfa、RPC)、减少IO(网络或者磁盘)次数

对应社会的管理:

(1)大数据引擎的实时计算——纯业务性质的事物请专业团队完成(专业的人做专业的事)

(2)减少处理环节——精简参与流程的人员数目(人少好办事)

(3)减少IO次数——即一次问好,一次办完(政府窗口提倡的“最多跑一次”活动)

2.所谓资源成本的最小化:即用较少的资源完成高效的服务,解决思路如下:

(1)获取系统消耗的性能数据

(2)找到性能消耗的大头、不合理的点

(3)按照裁撤一批资源、删减一批服务、整合一批服务的原则优化成本

(二)可用性:即系统正常响应和避免宕机的能力

1.所谓系统正常响应:即客户端请求的服务可以在预期内返回

(1)正常情况下的回应——提供完整服务

(2)异常情况下的响应——提供部分服务——消峰(kafka队列)、保中心(推荐功能、个性化功能)

对应社会的管理:

(1)提供完整服务——日常情况下提供全部服务

(2)消峰——疫情后的社保补交服务

(3)保中心——简化办事流程——疫情情况下水电气暖的服务,地震情况下的电信服务——基本无需办理

2.避免宕机的能力:高可靠

(1)分布式部署——K8S

(2)多地多中心部署 ——交行两地三中心(包括ES、数据库、DNS资源)

对应社会的管理:

(1)分布式部署——防空、电厂、粮食储备、应急物资

(2)多地多中心部署——后备指挥部

(三)容错能力:即系统从非正常状态恢复的能力

1.健康检查——自检、重启

2.代码级容错——异常处理

3.SRE监控——告警、投诉

对应社会的管理:

1. 定期人员换班(银行每日停止服务后的查账、清点)

2. 服务软件的重启、业务流程的重新办理(银行、公安的经典操作)

3. 监督人员、客户投诉

然而并不是所有的方面(性能、可用性、容错能力)都与微服务、分布式相同:

比如:

系统管理:微服务与性能的延迟性不完全一致

社会管理:各自团队——各自流程——耗时变长

系统管理:微服务、分布式服务与资源成本最小化不完全一致

社会管理:各自团队——资源冗余——资源变大(人、财、物又一套团队)

但微服务、分布式服务并不是性能优化的障碍

系统管理:微服务与可用性的系统正常响应基本一致,资源紧张下,只保证核心微服务就好,可以快速与其他服务切割

社会管理:资源紧张下,其他团队来支援核心团队——政府和事业单位部分停摆,转为防疫志愿者团队、扶贫团队

系统管理:分布式服务与可用性的避免宕机的能力基本一致,将服务部署在多个集群中,一个地区服务异常快速熔断、流量导流

社会管理:疫情初期,武汉停摆,全国医护人员支援武汉

(四)新功能开发的速度和能力

那社会管理能否成为系统管理的借鉴呢?笔者认为是可以的,

就像社会会不断的发展和进步、新的理念会提出、改革永远在进行时

一个系统也在不断的更新功能、不断的满足客户需求,设计一个系统,不仅仅要考虑当下,还好考虑进行时、未来发展

1.建立“XX示范区”、“XX试验区”——部分区域灰度测试

分布式架构的好处在于可以快速的在部分功能上实现灰度测试、试运行,即在部分区域实现功能体验,减少影响范围

2.建立流程优化试点——“最多跑一次”改革

微服务——松耦合——高度协作

微服务——松耦合——专业的人做专业的事——不同的人员/团队维护不同的模块

松耦合——高度协作——外循环转内循环——契约测试要做好

社会管理与系统管理的相似点:

系统管理:任何组织所做的系统设计(广义的系统)的结构,将不可避免地复制这个组织信息沟通的组织结构

社会管理:任何社会管理单位所做的社会服务,将不可避免地复制这个社会管理单位的组织结构

所以:

1.微服务、分布式服务与社会管理相类似,值得坚持

2.项目高效程度与团队负责项目的广度正相关——🙆‍♂️的行政管理中心——人员的职责微服务——团队的职责高广度——架构越大沟通成本越高——效率越低——大仓——大团队管理

3.一个人设计的维护系统永远是他人/其他团队难以维护的——人员流动是检验项目的可维护性的抓手——实习生——ISV

4.新服务要从调研开始——灰度测试——数据支撑——客户返回——系统架构升级——全面落地

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 软件工程师通常会对三个方面进行优化:性能、可用性、容错能力
    • (一)性能:特指使延迟或资源成本的最小化
      • (二)可用性:即系统正常响应和避免宕机的能力
        • (三)容错能力:即系统从非正常状态恢复的能力
          • (四)新功能开发的速度和能力
          相关产品与服务
          流计算 Oceanus
          流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的企业级实时大数据分析平台,具备一站开发、无缝连接、亚秒延时、低廉成本、安全稳定等特点。流计算 Oceanus 以实现企业数据价值最大化为目标,加速企业实时化数字化的建设进程。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档