微服务重构四步法

简介: 微服务重构四步法

本文是【技术琐话公益直播】5月27日晚分享嘉宾潘志伟在线直播中主题《微服务硬核实战》内容整理,内容有删减调整,直播回放见之前的分享。

1 

如何正确开启微服务

一般情况技术人员需要思考项目使用服务的流程为,框架的选型(spring cloud、dubbo、自研等),跑通微服务项目的案例demo,在以为掌握的情况下开始做计划,并开始做项目。以下通过案例分析几个失败的案例。

案例介绍一:改革需要试错的成本

现象:某公司打算转型微服务架构,招聘了一个有微服务经验的架构师,经过2个月高频率开发后第一个服务化的模块上线了,但是上线后出现了生产事故,最终以技术不合格为由开除了架构师。分析:对结果负责的思想可以理解,但是过程也非常重要。在做微服务架构初期的时候,公司管理层要容忍研发适当的错误。嘉宾观点:改革需要试错成本。

案例介绍二:项目架构调整要获得老板的认可

现象: 有个架构同学反馈,他在公司推行微服务太难了,根本推不动,硬件资源没有, 人力资源也没有,全部都是自己一个人一个模块一个模块的改造。分析:主要原因组织上没有认可,所以没有任何资源,这个项目注定是一个失败的项目。嘉宾观点:技术架构的调整不能仅凭技术的满腔热血,首先要获得老板的认可。

案例介绍三:时间紧急,导致项目失败

业务极速膨胀,公司的CTO也是搞技术的,也认可搞微服务,人力资源部门全力配合招聘研发人员。前提条件是不能影响正常业务迭代,而且微服务整体时间范围要尽可能的短。结果:因为时间紧,每个小团队快速启动开发,结果工程结构各式各样,部署脚本很难统-,结果失败了。嘉宾观点:磨刀不误砍柴工,前期充分培训非常重要。整理一套适合团队的标准代码结构同样重要。
从上面三个案例,我们知道一个微服务的的开启,需要项目负责人、公司承担需要试错的成本、需要获得老板的认可、需要足够的时间去尝试,缺一不可。那如何落地微服务重构了,这里我们介绍微服务重构的四部法则。

2 

微服务重构四步法



image.png


image.png


3 

微服务实战技巧

服务到底怎么拆分?微服务拆分多少合适?这个在市场上面很少有看到类似的书籍来告诉的我们的系统应该怎么拆分。因为每家公司的业务和场景、形态都不尽相同。这里我们根据三个维度进行拆分。

1.初级阶段以功能为力度拆分

2.以迭代频率拆分

3.以接口粒度拆分




image.png


image.png


image.png


image.png


4 

总结

1、微服务并不可怕,怕的是你没搞定领导

2、优化无止境,好的设计减少后续优化成本,有时候提高硬件设备是最优的优化

3、架构本着可用原则,不要过渡架构。架构low点不可耻,可耻的是项目延期、上线后线上Bug频发

4、不要企图规划3年后的架构模式,有可能不到3年你就把自己的架构推翻了

相关文章
|
微服务
微服务迁移模式之Martin Flower绞杀者模式
绞杀者模式(Strangler Pattern)是一种非常流行的从单体系统向微服务迁移的策略,其主张通过用新服务替换特定功能来将单体系统逐步转换为微服务,一旦新服务已经能够代替原有旧有功能,就将原有功能组件绞杀(即彻底停用)。
3585 1
微服务迁移模式之Martin Flower绞杀者模式
|
开发框架 人工智能 Java
破茧成蝶:传统J2EE应用无缝升级AI原生
本文探讨了技术挑战和解决方案,还提供了具体的实施步骤,旨在帮助企业顺利实现从传统应用到智能应用的过渡。
破茧成蝶:传统J2EE应用无缝升级AI原生
|
Cloud Native Java API
聊聊从单体到微服务架构服务演化过程
本文介绍了从单体应用到微服务再到云原生架构的演进过程。单体应用虽易于搭建和部署,但难以局部更新;面向服务架构(SOA)通过模块化和服务总线提升了组件复用性和分布式部署能力;微服务则进一步实现了服务的独立开发与部署,提高了灵活性;云原生架构则利用容器化、微服务和自动化工具,实现了应用在动态环境中的弹性扩展与高效管理。这一演进体现了软件架构向着更灵活、更高效的方向发展。
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
450 3
|
10月前
|
缓存 运维 监控
《微服务架构从故障频发到自愈可控的实战突围方案》
本文以某金融科技平台支付结算系统的“超时连锁故障”为切入点,复盘了微服务架构在高并发场景下的稳定性危机。故障根源在于渠道路由模块配置加载的并发冲突,以及线程池与超时参数的失配,且因缺乏有效隔离机制导致故障蔓延。团队通过重构配置加载逻辑、构建参数动态匹配模型、搭建三维监控体系、引入服务隔离与流量治理策略,并结合混沌工程演练,将架构从“被动修复”升级为“自愈可控”。最终系统交易成功率稳定在99.98%以上,同时沉淀出微服务韧性建设的实战方法论。
339 0
|
网络协议 开发者 Python
Socket如何实现客户端和服务器间的通信
通过上述示例,展示了如何使用Python的Socket模块实现基本的客户端和服务器间的通信。Socket提供了一种简单且强大的方式来建立和管理网络连接,适用于各种网络编程应用。理解和掌握Socket编程,可以帮助开发者构建高效、稳定的网络应用程序。
712 10
|
人工智能 供应链 数据可视化
跨境电商供应链优化趋势:从智能库存到绿色物流
高效供应链管理是行业发展的关键,涉及原材料采购、生产制造、库存管理、跨境物流和终端交付等环节。通过数据驱动决策、多供应商合作、灵活物流策略、清关合规和技术赋能,可以优化供应链,提升运营效率。
1770 7
跨境电商供应链优化趋势:从智能库存到绿色物流
|
存储 负载均衡 监控
何为微服务、网关、服务发现/注册?
随着互联网业务复杂性慢慢提高,单机服务的架构慢慢出现了生产效率问题 微服务架构带来的有优点也有缺点,使用前需要调研清楚 微服务架构的网关设计、服务注册/发现、配置管理都是关键点
何为微服务、网关、服务发现/注册?
|
网络协议 C语言
C语言 网络编程(十一)TCP通信创建流程---服务端
在服务器流程中,新增了绑定IP地址与端口号、建立监听队列及接受连接并创建新文件描述符等步骤。`bind`函数用于绑定IP地址与端口,`listen`函数建立监听队列并设置监听状态,`accept`函数则接受连接请求并创建新的文件描述符用于数据传输。套接字状态包括关闭(CLOSED)、同步发送(SYN-SENT)、同步接收(SYN-RECEIVE)和已建立连接(ESTABLISHED)。示例代码展示了TCP服务端程序如何初始化socket、绑定地址、监听连接请求以及接收和发送数据。
|
人工智能 JSON 自然语言处理
我的Google Vertex AI实践经验分享
忙碌的开发者分享了使用Google Vertex AI的实践经验。从复杂的初始设置到微调模型时的手动资源分配,作者经历了种种挑战,包括高昂的成本与不足的文档支持。尽管如此,Vertex AI在图像识别和自然语言处理方面展现出强大能力。作者希望反馈能帮助Google改进服务,使之更加用户友好。
983 2