架构EA演进

news2025/1/9 17:00:13

架构演进

  • 目录
    • 概述
      • 需求:
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

架构演进的是一个非常常见的需求。

需求:

  1. 技术规划:

单体服务是指应用程序作为一个整体被部署和管理。它有一个单一的代码库、一个共享的数据库、一个单一的部署单元。这种架构可以简单、易于管理和部署,但是会面临一些问题,比如难以快速扩展、维护和升级困难等。

微服务是一种基于分布式系统架构的应用程序设计方法,它将复杂应用程序拆分成多个小的、独立的服务,每个服务都可独立部署、扩展和升级。这种架构有助于加速应用程序的开发、增强可扩展性、提升可靠性和灵活性。

单体服务向微服务演进的关键在于拆分。通过将单体服务拆分成多个小的、独立的服务来实现微服务。拆分过程中需要考虑服务的职责、服务之间的通信和接口设计等问题。同时,在实施微服务架构时,需要考虑服务注册与发现、负载均衡、安全性等问题,以确保微服务架构的稳定性和可靠性。

2. 技术选型:

以下是一些常用的微服务技术选型:

服务发现:可以采用 ZooKeeper、Consul、Eureka、etcd 等。
API 网关:可以采用 Kong、Zuul、API Gateway 等。
数据库:可以采用 MySQL、PostgreSQL、MongoDB、Cassandra 等。
消息队列:可以采用 RabbitMQ、ActiveMQ、Kafka 等。
配置中心:可以采用 Consul、Spring Cloud Config、Apollo 等。
日志收集:可以采用 ELK、EFK、Fluentd 等。
容器化:可以采用 Docker、Kubernetes、Mesos、Swarm 等。
服务网格:可以采用 Istio、Linkerd、Consul Connect、Envoy 等。
**

  1. 3.技术组件:

**
技术组件是指用于构建和支持系统、应用程序或软件的技术工具、框架、库和平台。以下是一些常见的技术组件:

  1. 操作系统:如Windows、Linux、Unix等。

  2. 数据库:如MySQL、Oracle、MongoDB等。

  3. 开发语言和框架:如Java、Python、.NET、Ruby on Rails、Django等。

  4. Web服务器:如Apache、NGINX等。

  5. 应用服务器:如Tomcat、JBoss等。

  6. 消息队列:如Kafka、RabbitMQ等。

  7. 缓存:如Redis、Memcached等。

  8. 容器技术:如Docker、Kubernetes等。

  9. 前端技术:如HTML、CSS、JavaScript、React、Vue等。

  10. 测试框架:如JUnit、Selenium等。

  11. 日志管理:如Log4j、Logback等。

  12. 部署自动化:如Ansible、Chef等。

这些技术组件可以相互配合,形成一个稳定、高效、灵活的系统架构,为用户提供优质的体验和服务。

  • 4.架构设计:

架构设计1.0
在这里插入图片描述

简要说明如下:

  1. 数据Mysql 采用主从架构,增加扩展性。

  2. 安全方面:
    2.1 spring security 沿用,增加安全库设计。
    2.2 内置安全编码规范

  3. 应用层 如下:
    先过渡到分布式架构,再逐步过渡到微服务架构上。部署层采用分布式部署。提高扩展性。

  4. 工作流平台
    适配到常见的工作流平台。

  5. 增加CICD 扩展平台:
    先搭建对应的git+Jekins 的部署平台。

演进方案:
1.1 解开单体内部的依赖关系。
如下是:

其中ota 作为的数据采集服务,提供第三方接口通信。
Pms 层则是我们的BFF层。
Pay 模块则是业务层。

1.2 确定所需的微服务。
目前PMS层: 接口适配
Pay: 支付功能:
Common: 为增加: 提供基础服务层。

1.3为微服务设计数据模型
这里是MySQL 双主架构。采用共享DB的方式实现。
1.4开发一种在单体和微服务数据库之间迁移和同步数据的方法。
因为采用的是单体架构和微服务数据迁移和同步的方法可以忽略。
1.5设计 API 并计划向后兼容。
这里考虑 API的全量一致。
1.6捕获单体应用的基线性能。
这里略
1.7为新系统的可用性和性能设定目标。
待写

参考资料和推荐阅读

  1. https://www.cnblogs.com/jiujuan/p/16871889.html

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring cloud搭建(service)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【C++】海量数据处理面试题(位图和布隆过滤器)

都是大厂面试题哦~ 文章目录 一.位图面试题 1.给定100亿个整数,设计算法找到只出现一次的整数 2.给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集? 3.1个文件有100亿个int,1G内…

等价类,边界值,场景法的使用方法和运用场景

等价类: 在很多情况下,很多人想到的测试方法是穷举测试,穷举测试是最全面的测试,但是数据量很大的情况下不太现实,测试效率太低,后来为了减少测试人员的工作量和提高测试的效率和以达到最好的测试质量&…

启明星辰集团CEO严望佳:与AI共生,共建以人为本的数字善治生态体系

近日,2023中国国际大数据产业博览会在贵阳成功召开。启明星辰集团董事长兼首席执行官严望佳应邀出席大会“数据安全产业高质量发展”高端对话,发表“主动应对ChatGPT技术冲击,加强数据安全风险防控”主题演讲,同与会人士共探数据安…

32.有序序列插入一个整数(刷题)

描述 有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。 输入描述: 第一行输入一个整数N(0≤N≤50)。 第二行输入N个升序排列的整数,输入用空格分隔的N个…

2023年前端面试题汇总-浏览器原理

1. 浏览器安全 1.1. 什么是 XSS 攻击? 1.1. 1. 概念 XSS 攻击指的是跨站脚本攻击,是一种代码注入攻击。攻击者通过在网站注入恶意脚本,使之在用户的浏览器上运行,从而盗取用户的信息如 cookie 等。 XSS 的本质是因为网站没有对…

企业要从哪些方面着手进行数据安全治理?

什么是数据安全治理? 数据安全治理是指组织基于业务发展与合规要求,制定全面且系统的数据安全策略、流程与技术措施,对数据生命周期中的安全风险进行管控与优化的一系列管理活动。它需要从组织层面建立数据安全管理框架,保证敏感数…

2023-6-2-DIS研究

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

Java 列表导出

一、具体实现 import java.net.URLEncoder; import com.alibaba.excel.EasyExcel;List<实体> targets xxx; response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("UTF-8"); String fileName URLEncoder.encode(&…

深入理解设计原则之里氏替换原则(LSP)

系列文章目录 C高性能优化编程系列 深入理解设计原则系列 深入理解设计模式系列 高级C并发线程编程 LSP&#xff1a;里氏替换原则 系列文章目录1、里氏替换原则的定义和解读2、里氏替换原则可以用于哪些设计模式中&#xff1f;3、如何使用里氏替换原则来降低代码耦合度&#…

Julia系列14:调用自定义C/C++库

1. 基础调用&#xff1a;ccall 调用的基本格式为&#xff1a; ccall((:函数名, 库地址), 输出格式, (输入格式列表), 输入数据) 下面是例子&#xff1a; 1.1 基础数据结构 1.2 数组 首先是输入数组&#xff0c;注意需要convert 接着是输出数组&#xff0c;需要使用unsafe…

《操作系统》—— 处理机调度算法

前言&#xff1a; 在之前的文章中&#xff0c;我们已经了解了进程和线程相关的基本概念&#xff0c;今天我们将要了解的是关于处理机调度相关的知识。 目录 &#xff08;一&#xff09;调度的概念 1、调度的基本概念 2、调度的层次 3、三级调度的关系 &#xff08;二&…

遗传算法(Genetic Algorithm)

本文为阅读《遗传算法原理及应用》的笔记和心得 ISBN&#xff1a;7-118-02062-1 遗传算法简介 遗传算法是模拟生物在自然环境中的遗传和进化过程中而形成的一种自适应全局优化概率搜索算法 总的来说&#xff0c;求最优解解或近似最优解的方法主要有三种&#xff1a;枚举法、启…

【PCB专题】Allegro设置禁止铺铜区域但仍可以走线和打过孔

在PCB设计中我们有时候需要做一些净空区,但是净空区内有一些走线和过孔。如果使用Route Keepout画一个框的话,那是不允许走线和打过孔的,会报DRC。 那么如何才能既禁止区域铺铜,又可以走线和打过孔不报DRC呢? Setup->Areas->Shape Keepout Options选择要禁止…

第二十一篇、基于Arduino uno,控制有源蜂鸣器和无源蜂鸣器发出声音——结果导向

0、结果 说明&#xff1a;有源蜂鸣器按照一定的频率报警&#xff0c;无源蜂鸣器则是一直报警&#xff0c;都采用非阻塞方式编写&#xff0c;如果是你想要的&#xff0c;可以接着往下看。 1、外观 说明&#xff1a;有源蜂鸣器和无源蜂鸣器看上去一样&#xff0c;但是背面不一…

详解Handler

详解Handler 文章目录 详解Handler1.Handler的工作流程1.1主线程具有如上性质的原因1.2流程图 2.Handler流程中的重要的几个方法2.1Message中的属性2.2.1what2.2.2replyTo2.2.3obtain 2.2Handler.post()与Handler.sendMessage()2.2.1post的源码2.2.1.1sendMessageDelayed()源码…

centos6离线安装docker

参考 RedHat 6.8 离线安装Docker &#xff08;rpm包安装&#xff09; - 神奇二进制 - 博客园 (cnblogs.com) 可参考&#xff0c;但本次安装未参考 CentOS6 完全离线安装Docker - 简书 (jianshu.com) 走了一遍&#xff0c;大雾 (1条消息) 离线安装Docker_洒家肉山大魔王的博客…

萌啦科技参加ICBE跨境电商博览会完美落幕,期待再相会!

“ 萌啦科技联合DNY123、喜运达物流共同亮相2023 ICBE跨境电商博览会&#xff0c;更全面地服务东南亚电商卖家&#xff0c;把握新兴市场电商发展商机&#xff01;” 跨境电商“万人”博览会 5月15日-5月17日&#xff0c;ICBE国际跨境电商交易博览会在广州琶洲保利世贸博览馆隆重…

《商用密码应用与安全性评估》第四章密码应用安全性评估实施要点4.3密码测评要求与测评方法

总体要求测评方法 1.密码算法核查 测评人员应当首先了解信息系统使用的算法名称、用途、位置、执行算法的设备及其实现方式&#xff08;软件、硬件或固件等&#xff09;。针对信息系统使用的每个密码算法&#xff0c;测评人员应当核查密码算法是否以国家标准或行业标准形式发布…

数据结构与算法-二分查找

1.1 什么是算法&#xff1f; 定义 在数学和计算机科学领域&#xff0c;算法是一系列有限的严谨指令&#xff0c;通常用于解决一类特定问题或执行计算 In mathematics and computer science, an algorithm (/ˈlɡərɪəm/) is a finite sequence of rigorous instructions, …