微服务架构改造案例

news2024/11/25 20:15:46
最后一个部分,结合我们自己的财务共享平台项目进行了微服务架构改造案例分析。
对于改造前的应用,实际上存在四个方面的问题。
其一是关于高可用性方面的,即传统的单体应用我们在进行数据库水平扩展的时候已经很难扩展,已经出现了大并发,大数据 量下数据库的性能问题。
其二是多团队异地协同上,传统的 IT 架构很难进行更好的多团队分工,同时在异地协同过程中对于开发,测试,前方实施经常出现大量的无效沟通情况。
其三是敏捷性已经不能满足客户的需求,比如我们一个小版本规划最少 2 3 周,而很多时候在客户往往我们能够在一周就实施 一个变更版本上线。
其四是开发和运维之间的沟通协同困难,同时由于原来是一个大单体应用,版本升级和变更同样困难,一个是部署包好几百 M很难管理,一个是往往修改A 模块功能导致 B 模块出现异常等。
也正是由于这些原因我们启动了项目的微服务架构改造工作。
在整个改造过程中,重点仍然是如何划分微服务,而核心思路仍然是流程分析入手。即:基于业财一体化最佳实践,重新梳理 端到端业务流程和协同,找到关键阶段划分。对于关键阶段进一步细化,分析详细的业务操作和协同流程( 二到三级流程)。
我们首先进行粗颗粒度的模块拆分和集成分析,在分析完成后储备可以明确的识别出类似报账,资金,发票,电子凭证,影像,预算,ERP 集成等关键微服务模块。
在微服务模块识别完成后,我们还需要针对单个微服务进一步进行业务交互和协同分析,以梳理和识别API接口服务能力。
在整个微服务架构改造和转型中,我们还需要进行技术平台的统一。采用 SpringCloud 框架体系,启用注册中心,负载均衡,限流熔断,网关能力。同时前后端完全分离开发,前端基于VUE 框架进一步封装和定制。
我们采用禅道项目管理工具统一敏捷研发管理,需求拆分到用户故事点实现端到端管理,形成产品-微服务两级的产品架构和版本管理体系,实现和持续集成和版本发布过程集成。
同时我们采用 DevOps 支撑平台来实现整个微服务架构设计和开发过程中的持续集成和交付能力。对于 DevOps 平台的核心架构和功能,可以参考我前面发布过的文章详细了解。
在整个DevOps实施过程中,我们通过 DevOps 流水线对大量的开源工具进行了整合。其中包括了 Git 库, Sonar 静态代码检查,Jekins 持续集成, Kurbernetes Docker 容器,自动化测试工具, ELK 日志采集和分析,监控工具等。
实现研发过程和 DevOps 过程的集成。一个 DevOps 支撑平台离不开和容器化 PaaS 平台的集成,即最终的编译构建完成的内容形成镜像并放到镜像仓库,后续部署,环境迁移,资源扩展基于镜像仓库进行快速的拷贝和复制。
对于Docker 容器一般会和 K8S结合来实现资源的动态调度,集群管理能力。环境迁移是基于镜像进行环境拷贝和迁移,而不再需要重新构建和打包,这也是我们原来在谈持续集成技术的时候一直强调的一点。只有这样才能够保证测试通过的包就是最终部署到生产环境的包。
对于DevOps实施效果可以总结为,版本构建频度: 2 天一次 -> 半天一次或实时触发;版本构建时间:缩短到 1 分钟内完成;应
用交付部署:实现环境自动化迁移和云部署;测试执行效果:接口测试全部自动化。

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

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

相关文章

XShell远程连接Ubuntu

环境 系统:Ubuntu 18.04.6 LTS IP:192.168.1.4 ps:查看ubuntu版本 lsb_release -a 查看ubuntu的ip地址 Ubuntu系统准备工作 root权限 打开ubuntu系统后,打开终端,切换为root权限:su root 如果出现su root认证失…

管理经济学基本概念(五):一些基本术语

1、理性-行动者范式 使经济学家行动一致的东西就是采用理性-行动者范式来预判人的行为。简单地说,这个范式认为人们的行动式理性的、优化的和自利的。 2、税后净营业利润 税后经营净利润(NOPAT)是指将公司不包括利息收支的营业利润扣除实付所得税税金之后的数额加…

Acwing 907. 区间覆盖

Acwing 907. 区间覆盖 知识点题目描述思路讲解代码展示 知识点 贪心 题目描述 思路讲解 代码展示 #include <iostream> #include <algorithm>using namespace std;const int N 100010;int n;struct Range {int l, r;bool operator < (const Range &W) …

【day11.02】网络编程脑图

大小端存储&#xff1a; ip地址划分&#xff1a;

MySQL 锁分类和详细介绍

锁是计算机协调多个进程或线程并发访问某一资源的机制&#xff0c;在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源&#xff0c;锁机制是保证数据一致性和并发性的重要手段&#xff0c;它…

软件设计模式系列之二十二——状态模式

1 模式的定义 状态模式是一种行为型设计模式&#xff0c;它允许对象在内部状态发生改变时改变其行为&#xff0c;使得对象的行为看起来像是改变了其类。状态模式将对象的状态抽象成一个独立的类&#xff0c;让对象在不同状态下具有不同的行为&#xff0c;而且可以在运行时切换…

做一个优秀的博士生,时间的付出是必要条件

&#xff0a;图片来自管理学季刊 时间的付出 所有成功的科学家一定具有的共同点&#xff0c;就是他们必须付出大量的时间和心血。这是一条真理。实际上&#xff0c;无论社会上哪一种职业&#xff0c;要想成为本行业中的佼佼者&#xff0c;都必须付出比常人多的时间。有时&…

【知识点随笔分析 | 第六篇】HTTP/1.1,HTTP/2和HTTP/3的区别

前言&#xff1a; 当今互联网已成为人们生活的重要组成部分&#xff0c;而HTTP协议&#xff08;Hypertext Transfer Protocol&#xff09;是支持Web通信的基础。随着Web技术的发展和互联网应用的不断增多&#xff0c;HTTP也在不断演进。本文旨在介绍HTTP的演变过程中的三个重要…

【Godot4.1】Godot实现闪烁效果(Godot使用定时器实现定时触发的效果)

文章目录 准备工作创建Sprite2D创建Timer节点 编写脚本完整代码运行效果 准备工作 如果你希望配置C#编写脚本&#xff0c;可以查看如下教程&#xff1a; Godot配置C#语言编写脚本 创建Sprite2D 首先弄一个用于显示的Sprite2D&#xff0c;右键单击任意节点&#xff0c;然后选…

Transformer在小目标检测上的应用

本篇文章是博主在AI、无人机、强化学习等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在AI学…

mysql双主互从通过KeepAlived虚拟IP实现高可用

mysql双主互从通过KeepAlived虚拟IP实现高可用 在mysql 双主互从的基础上&#xff0c; 架构图&#xff1a; Keepalived有两个主要的功能&#xff1a; 提供虚拟IP&#xff0c;实现双机热备通过LVS&#xff0c;实现负载均衡 安装 # 安装 yum -y install keepalived # 卸载 …

反向输出一个三位数

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

手把手教你完成(Java)师生信息管理系统

手把手教你完成&#xff08;Java&#xff09;师生信息管理系统 对阶段一学到的知识进行应用&#xff0c;完成练手小项目。同时&#xff0c;也可以当做学校的课设来做。项目已上传 CSDN &#xff0c;可以按需下载。 一、成果展示 添加学生&#xff08;查看学生&#xff09; 删除…

计算机毕业设计 基于SSM的宿舍管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

【C进阶】指针笔试题解析

做题之前我们再来回顾一下 对于数组名的理解&#xff1a;除了以下两种情况&#xff0c;数组名表示的都是数组首元素的地址 &#xff08;1&#xff09;sizeof&#xff08;数组名&#xff09;&#xff1a;这里的数组名表示整个数组 &#xff08;2&#xff09;&&#xff08;数…

关掉在vscode使用copilot时的提示音

1. 按照图示的操作File --> Preferences --> Settings 2. 搜索框输入关键字Sound&#xff0c;因为是要关掉声音&#xff0c;所以找有关声音的设置 3. 找到如下图所示的选项 Audio Cues:Line Has Inline Suggetion,将其设置为Off 这样&#xff0c;就可以关掉suggest code时…

使用 Python 给 PDF 添加目录书签

0、库的选择——pypdf 原因&#xff1a;Python Version Support Python 3.11 3.10 3.9 3.8 3.7 3.6 2.7 pypdf>3.0 YES YES YES YES YES YES PyPDF2>2.0 YES YES YES YES YES YES PyPDF2 1.20.0 - 1.28.4 YES YES YES YES YES YES P…

【JAVA】为什么要使用封装以及如何封装

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 前言 Java的封装指的是在一个类中将数据和方法进行封装&#xff0c;使其可以保护起来&#xff0c;只能在该类内部访问&#xff0c;而不允许外部直接访问和修改。这是Java面向对象编程的三…

Python3学习笔记——第一章:基础入门

Python3 有段时间没摸Python了&#xff0c;浏览了一下菜鸟教程&#xff0c;巩固一下基础吧。 Python3学习笔记——第一章&#xff1a;基础入门 文章目录 Python3一、Python3 简介二、Python的安装三、查看 Python 版本四、第一个Python3程序 一、Python3 简介 讲几个对编程有…

【Cesium创造属于你的地球】相机系统

相机系统里面有setView&#xff0c;flyTo&#xff0c;lookAt&#xff0c;viewBoundingsphere这几种方法&#xff0c;以下是相关的使用方法&#xff0c;学起来&#xff01;&#xff01;&#xff01; setView 该方法可以直接切换相机视口&#xff0c;从而不需要通过一个飞入的效…