单例服务拆分为分布式架构

将独立业务服务拆分为分布式

为啥会有这个想法?因为我要造锤子,拿着造好的锤子,去找锤子,没有造锤子的经验无法找一个造锤子的坑。
在这里插入图片描述

现有情况说明

单机软件:就是将软件安装在自己的电脑上,自己用的那种,这个需要拆分分布式么?答:完全不要的那种。
现有业务:软件主要是做模型开发,然后在一定条件下计算这个模型,针对各种情况计算出一定的概率值。
现有架构主要框架构成:springboot、mybatis、Mysql、webSocket(客户端有数据缓存需要及时告知其他客户端)、activemq(主要用于和计算引擎交互)。
在这里插入图片描述

戏精开始整活

目标:高大上,最求13.
不管好不好用,来一堆框架,什么spring全家桶、主从数据库、openFeign、getway、nacos、redis通通上。
花一秒思考一下:

  • 主从数据库:保证数据库高可用,万一有个内存或者磁盘满了,还有一个可用。至于从节点是只读还是读写,我们这款软件不用考虑。
  • openFeign:远程调用(RPC),不用自己的写请求调用的接口看起来就很厉害的样子,如果有以后,那么以后在横向扩展的时候,就不用自己配置节点的信息。(当然也可以直接将接口发送到网关由网关转发,有时网关会检查用户信息,这样就需要做排除,麻烦!!!)
  • getway:网关,用来转发请求和webSocket消息;写一些拦截器做些信息检查,鉴权等;配置请求转发规则;熔灾降级等,网上说zuul转发webSocket的机制不太好。
  • nacos:都上分布式了,没有一个配置中心恐怕这个13有点low,当然注册中心这个也是必须要的,所以来个nacos。
  • redis:都是分布式了,有很多java中原来使用的锁,以及线程安全的变量也要替换一下。还好单机版的redis可以保证原子性。

整上心中预想的架构图:
在这里插入图片描述

改造过程中遇到的问题点

  • 原来业务有数据初始化和定时任务,横向处理完后,需要注意这样业务,是否要指定机器完成
  • webSocket消息经过消息处理中心后,需要调用模型构建服务,此时OpenFeign需要携带用户信息,此时用户信息需要添加到api中。
  • 用户的登录的处理,放到getway中还是模型构建服务中。
  • 业务服务中,如果有读写公共资源的,需要加锁或者使用缓存处理。(读写磁盘文件,需要对文件获取锁;对于原有的java中的锁和线程安全类需要使用redis处理)
  • 主从数据库,拆分主从后,从节点负责读取,在代码中如何便捷实现;主节点挂了之后,如何让之后的curd发送到从节点。
  • 关于用户信息的存储方式,是存放到缓存中还是header中。
  • 静态资源:项目中存在重定向的页面,打开之后会到定向的模型构建服务中的某一个服务中且ip地址也是该服务的ip此时,例如:原来请求的是http://127.0.0.1:8080/login.html,经过重定向后编程了http://192.168.50.121:8082/xxxx,这样之后的请求都会走8082的服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/430880.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于Java并发多线程的一点思考

写在开头 在过去的2023年双11活动中,天猫的累计访问人次达到了8亿,京东超60个品牌销售破10亿,直播观看人数3.0亿人次,订单支付频率1分钟之内可达百万级峰值,这样的瞬间高并发活动,给服务端带来的冲击可想而…

linux kernel物理内存概述(五)

目录 概述 一、快速路径分配 1、get_page_from_freelist 2、rmqueue()函数 二、慢速路径分配 1、分配流程 三、direct_compact 概述 物理内存分配步骤 1、初始化,参数初始化 2、内存充足,快速分配 get_page_from_freelist 3、内存压力大,慢速…

DxO PhotoLab 7:影像之美,源于细节之魅 mac/win激活版

DxO PhotoLab 7是一款功能强大的专业摄影后期处理软件,专为摄影师设计,以帮助他们实现卓越的图像质量和效果。该软件以其卓越的算法和用户友好的界面,为摄影师提供了一个全面而灵活的解决方案,让每一张照片都能发挥出其最大的潜力…

HCIA-HarmonyOS设备开发V2.0证书

目录 一、不墨迹,上证书二、考试总结三、习题四、知识点五、坚持就有收获 HCIA-HarmonyOS Device Developer V2.0 开发者能力认证考试已通过。 一、不墨迹,上证书 一个多月的努力,验证了自己的学习成果,也认识到自己有待提升之处…

D-ID Studio:数字身份认证的新纪元

随着科技的飞速发展,数字身份认证已逐渐成为我们日常生活中不可或缺的一部分。在这个背景下,D-ID Studio以其前沿的技术和创新的解决方案,正引领着数字身份认证的新纪元。 D-ID Studio是一个功能强大的在线平台,专注于提供全面的…

区间dp-

间dp就是在区间上进行动态规划,求解一段区间上的最优解。主要是通过合并小区间的最优解进而得出整个大区间上最优解的 dp 算法。 既然让我求解在一个区间上的最优解,那么我把这个区间分割成一个个小区间,求解每个小区间的最优解,…

在 Rust 中实现 TCP : 3. TCP连接四元组

连接四元组 我们的项目已经取得了很大的进展——接下来能够开始解决 TCP 协议的实现问题。下面将讨论 TCP 的一些行为及其各种状态。 在多任务操作系统中,各种应用程序(例如 Web 服务器、电子邮件客户端等)需要同时进行网络访问。为了区分这…

openGauss学习笔记-236 openGauss性能调优-SQL调优-Query执行流程

文章目录 openGauss学习笔记-236 openGauss性能调优-SQL调优-Query执行流程236.1 Query执行流程236.1.1 调优手段之统计信息236.1.2 调优手段之GUC参数236.1.3 调优手段之底层存储236.1.4 调优手段之SQL重写 openGauss学习笔记-236 openGauss性能调优-SQL调优-Query执行流程 S…

如何选择程序员职业赛道

目录 前言1 个人技能分析1.1 技术栈评估1.2 经验积累1.3 数据科学能力 2 兴趣与价值观2.1 用户交互与界面设计2.2 复杂问题解决与系统优化 3 长期目标规划4 市场需求分析4.1 人工智能和云计算4.2 前沿技术趋势 5 就业前景5.1 前端在创意性公司中的应用5.2 后端在大型企业中的广…

全面分析vcruntime140_1.dll无法继续执行代码的处理方法,3分钟修复vcruntime140_1.dll

如果系统弹出一个错误警告,指出“vcruntime140_1.dll无法继续执行代码”,这通常意味着您的Windows系统中缺失了一个关键的文件,或者该文件已损坏。​vcruntime140_1.dll​是随Visual C Redistributable for Visual Studio 2015, 2017和2019提…

【更新2022】各省数字经济水平测算 原始数据+结果 2011-2022

数据说明:参照赵涛等(2020)的文章,利用熵值法和主成分对省市数字经济水平进行测算,原始数据来自第五期北大数字普惠金融指数,含原始数据,以及熵值法、主成分两种测算结果。一、数据介绍 数据名…

无人机/飞控--ArduPilot、PX4学习历程记录(1)

本篇博客用来记录个人学习记录,存放各种文章链接、视频链接、学习历程、实验过程和结果等等.... 最近在整无人机项目,接触一下从来没有接触过的飞控...(听着就头晕),本人纯小白。 目录 PX4、Pixhawk、APM、ArduPilot、Dronecode Dronekit…

Linux 设置快捷命令

以ll命令为例: 在 Linux 系统上,ll 命令通常不是一个独立的程序,而是 ls 命令的一个别名。 这个别名通常在用户的 shell 配置文件中定义,比如 .bashrc 或 .bash_aliases 文件中。 要在 Debian 上启用 ll 命令,你可以按…

鸿蒙 Stage模型-AbilityStage、Context、Want

前提:基于官网3.1/4.0文档。参考官网文档 基于Android开发体系来进行比较和思考。(或有偏颇,自行斟酌) 一、 AbilityStage 1.概念 AbilityStage是一个Module级别的组件容器,应用的HAP在首次加载时会创建一个AbilitySt…

怎么写苹果群控核心功能的源代码!

随着移动设备的普及和技术的不断发展,苹果设备群控技术成为了许多开发者关注的焦点,苹果群控技术允许开发者通过编写源代码,实现对多台苹果设备的集中管理和控制。 一、了解苹果群控技术的基本原理 在编写苹果群控核心功能的源代码之前&…

书生浦语全链路开源体系

推荐阅读论文 A Survey Of Large Language Models 书生浦语开源的模型 从模型到应用 书生浦语开源体系 书生万卷开源数据集 除此之外还有OpenDataLab国内数据集下载网站。 预训练框架InterLM-Train 微调框架XTuner 评测工具体系 国内外常见的大语言模型评测基准&#xff1a…

YOLOv8独家原创改进:特征融合涨点篇 | 广义高效层聚合网络(GELAN) | YOLOv9

💡💡💡本文独家改进:即结合用梯度路径规划(CSPNet)和(ELAN)设计了一种广义的高效层聚合网络(GELAN),高效结合YOLOv8,实现涨点。 将GELAN添加在backbone和head处,提供多个yaml改进方法 💡💡💡在多个私有数据集和公开数据集VisDrone2019、PASCAL VOC实现…

基于华为atlas的unet分割模型探索

Unet模型使用官方基于kaggle Carvana Image Masking Challenge数据集训练的模型。 模型输入为572*572*3,输出为572*572*2。分割目标分别为,0:背景,1:汽车。 Pytorch的pth模型转化onnx模型: import torchf…

bun 单元测试

bun test Bun 附带了一个快速、内置、兼容 Jest 的测试运行程序。测试使用 Bun 运行时执行,并支持以下功能。 TypeScript 和 JSX生命周期 hooks快照测试UI 和 DOM 测试使用 --watch 的监视模式使用 --preload 预加载脚本 Bun 旨在与 Jest 兼容,但并非所…

北京Excel表格线下培训班

Excel培训目标 熟练掌握职场中Excel所需的公式函数计算,数据处理分析,各种商务图表制作、动态仪表盘的制作、熟练使用Excel进行数据分析,处理,从复杂的数据表中把数据进行提取汇总 Excel培训形式 线下面授5人以内小班&#xff…