您现在的位置是:首页 >学无止境 >架构EA演进网站首页学无止境

架构EA演进

痴于代码 2024-07-21 00:01:02
简介架构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.

目录

在这里插入图片描述

概述

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

需求:

  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

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

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。