您现在的位置是:首页 >学无止境 >架构EA演进网站首页学无止境
架构EA演进
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.
目录
概述
架构演进的是一个非常常见的需求。
需求:
- 技术规划:
单体服务是指应用程序作为一个整体被部署和管理。它有一个单一的代码库、一个共享的数据库、一个单一的部署单元。这种架构可以简单、易于管理和部署,但是会面临一些问题,比如难以快速扩展、维护和升级困难等。
微服务是一种基于分布式系统架构的应用程序设计方法,它将复杂应用程序拆分成多个小的、独立的服务,每个服务都可独立部署、扩展和升级。这种架构有助于加速应用程序的开发、增强可扩展性、提升可靠性和灵活性。
单体服务向微服务演进的关键在于拆分。通过将单体服务拆分成多个小的、独立的服务来实现微服务。拆分过程中需要考虑服务的职责、服务之间的通信和接口设计等问题。同时,在实施微服务架构时,需要考虑服务注册与发现、负载均衡、安全性等问题,以确保微服务架构的稳定性和可靠性。
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 等。
**
- 3.技术组件:
**
技术组件是指用于构建和支持系统、应用程序或软件的技术工具、框架、库和平台。以下是一些常见的技术组件:
-
操作系统:如Windows、Linux、Unix等。
-
数据库:如MySQL、Oracle、MongoDB等。
-
开发语言和框架:如Java、Python、.NET、Ruby on Rails、Django等。
-
Web服务器:如Apache、NGINX等。
-
应用服务器:如Tomcat、JBoss等。
-
消息队列:如Kafka、RabbitMQ等。
-
缓存:如Redis、Memcached等。
-
容器技术:如Docker、Kubernetes等。
-
前端技术:如HTML、CSS、JavaScript、React、Vue等。
-
测试框架:如JUnit、Selenium等。
-
日志管理:如Log4j、Logback等。
-
部署自动化:如Ansible、Chef等。
这些技术组件可以相互配合,形成一个稳定、高效、灵活的系统架构,为用户提供优质的体验和服务。
- 4.架构设计:
架构设计1.0
简要说明如下:
-
数据Mysql 采用主从架构,增加扩展性。
-
安全方面:
2.1 spring security 沿用,增加安全库设计。
2.2 内置安全编码规范 -
应用层 如下:
先过渡到分布式架构,再逐步过渡到微服务架构上。部署层采用分布式部署。提高扩展性。 -
工作流平台
适配到常见的工作流平台。 -
增加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为新系统的可用性和性能设定目标。
待写
参考资料和推荐阅读
- https://www.cnblogs.com/jiujuan/p/16871889.html
欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~