曾经参与的,服务再拆分和转发

2024-06-12 23:32

本文主要是介绍曾经参与的,服务再拆分和转发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.为什么要做服务再拆分

第一篇就说到我们后台是微服务架构,我们的服务有十几个,一年多来都是这么沿用的,但其中也存在问题,就是有些服务业务比较混乱,比如用户服务中有非用户模块,于是每次修改这些非用户模块时,都要发布用户服务,但用户服务是比较核心的模块,有的时候不和我们版本基线走,就造成了一些崴脚的局面。另一方面这也违背领域驱动模型DDD的原则,服务边界不清会导致服务混乱,耦合不当的问题,于是在今年3月初,经过我的建议和同事间的讨论,主管同意我们做服务拆分。

思路:我们都知道,如果一个业务从一个服务迁移到了另一个服务,那么前端路由势必会变,但是必须兼容前端,否则前端也要修改,但这其实是后端的改造,对前端应该是透明的。于是我们架构同事在zuul新增了转发规则:如果一个请求在请求变化记录表中有,就转发到新的服务

2.实施过程

2.1 服务划分

上面说到为了使服务更合理,粒度更准确,我们对一些业务模块进行了再细分。比如我负责的经费模块从用户模块迁移到一个新的服务,funding。其它要拆分的业务模块也是一样,有的是迁移到新的

2.2 建立新服务模块

  

2.3 如果要换库,就建立新的库。准备脚本迁移表

开发和测试环境自己建,生产环境运维去建

2.4 准备数据迁移脚本,将原表的数据insert into到新表

注意:必须保证开发、测试、各线上环境数据表结构一模一样,否则可能出现不可预期的问题

2.5 加新服务的配置文件,如果不是新服务就不用加

2.6 修改与原服务相关的业务,注意修改表名或文件路径

2.7 记录原服务对应业务的路由到请求变化记录表中

这一篇说到我们用的是Swagger管理Api,还有导出功能,于是我稍微改造了下这里的导出,按要求输出我要的url格式,转换为insert into语句插入到请求变化记录表中。

设置转发规则

这是至关重要的一点,过程大概是这样:

将请求变化记录表初始化redis中

在zuul中转发

读取redis中转发信息

根据当前请求转发

转发并设置缓存

RequestContext设置新的ServiceId,dest表示请求url

思考与回顾:

为什么把请求变化记录表初始化Redis中?

因为请求变化记录表一般不会变,如果每次请求来了还要去查这个表,显然不合理,查缓存是符合要求的。

通过设置Zuul的RequestContext进行转发,学习了。希望后面能够应用。

这篇关于曾经参与的,服务再拆分和转发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1055645

相关文章

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将