微服务架构项目浅析

​ 这个章节主要介绍微服务架构的从单体式架构如何演变而来,介绍为什么有这些组件侧重于微服务架构的整体,简明的表达微服务架构的全局场景,不涉及组件以及具体如何使用各个组件等细节问题,从整体把控,全文使用办公VIP系统为例做简要说明(本故事纯属虚构重在理解微服务架构)。

​ 由于公司成立之初人员紧张,公司里面只有Lex作为行政人员+人事+员工+老板,公司主要做化妆品售卖,为了满足购买会员越来越多,如何管理问题,Lex招聘了Alex去开发一套VIP系统进行管理VIP人员,刚开始的需求非常简单,只要能看到会员的基本信息和购买页面和记录即可,所以Alex三下五除二的就搞定了这个需求。开发出了一个war包进行部署就满足了需求。

​ 随着会员的持续增加,以及互联网的普及单一的功能已经无法满足目前的需求,需要增加手机端的通道,新增节日的活动力度,Alex很显然已经不能一个人同时负责这么多业务了,于是招聘了Mike和Alex同时开发这个需求,很快他们就完成了这个项目。
​ 随着品牌逐渐的被人熟知,越来越多的人进行购买,数据越来越多,节日越来越多,要进行的线上促销活动也越来越多,平台暴露出的问题也越来越多。

  • 会员管理模块出现问题后,需要将war重新开发,然后部署影响到了其他模块
  • 数据越来越多,进行问题排查越来越难
  • 平台人员越来越多,平台出现了性能瓶颈
    对于这么多问题,单一的一体式架构已经无法满足目前的需求,急需一种全新的架构来解决这些问题

B/S和C/S架构是指的我们测试系统的架构,在工作中我们说的微服务架构或者一体式架构是针对我们的B/S或者C/S中的S(server)来进行说明的,一体式架构可以简单理解为war包(前端和后端在一起);而微服务是把单独的模块进行分离,前后端进行分离来说明,对于测试来说是没有任何感知的。因为测试过程中仅针对功能进行测试

​ 对于我们上述的问题,急需要我们进行解决,伟大的程序员想出了把系统进行拆分为模块单独的模块构建为jar包而不是把所有东西都一股脑的放在一起构建为war包,本文主要描述组件的作用做简单了解。

​ Nginx作为反向代理器,主要处理大量用户进行同时登录后,进行操作的负载均衡,可以把接口分发给不同服务器进行处理从而达到均衡的效果。
​ Nginx的搭建相对比较简单配置Nginx分发服务器的地址以及前端等html存放位置即可,在使用过程中一般由运维功能师或者资深开发进行安装和配置。

​ Redis主要是Key-value型高性能数据库,弥补关系型数据库的不足,在使用过程中存储登录后的session等数据。
​ Redis分为单体模式和哨兵模式,哨兵模式可以监控Redis的多个进程,仅做了解即可工作过程中不需要测试进行搭建。

​ Rabbitmq作为中间件是进行处理大数据量的很好的中间件,当大量数据同时需要处理会对服务器造成很大的冲击这时候Rabbitmq就像清道夫一样把所有数据进行排列处理。
​ Rabbitmq一般的数据量小的服务器不需要使用,在大数据集群中才会使用优势才能体现,仅做简单了解即可,不需要深入。

​ Mysql应该是老面孔了,在微服务架构中,Mysql数据库主要用于存储数据,微服务为了更加彻底的分离实现初始化时,单独对不同模块建数据库和表的初始化脚本,达到分库分表的效果。
​ Mysql的搭建和使用只要会进行数据库的表的数据查询即可。

​ jar也就是我们微服务的核心了,war需要tomcat容器进行装载而jar自带tomcat容器,不需要单独安装,单独模块跟独立系统一样,可以实现不同jar包组合形成全新的系统。
​ jar使用会启动即可,使用Linux命令查询相关jar的进程即可。

​ jdk的作用不言而喻,使用java开发的代码为什么这么流行原因就是java的特点-write once,run anywhere,而保证这一特点的脊柱就是jdk,jdk中有jvm,所有代码都会在jvm中进行运行。

​ 说了这么多,相信能对微服务有所了解,简单来说微服务是为了解决互联网普及后应用或者程序越来越复杂的问题的,从而引入了各种组件来解决这些问题,组件仅仅为我们解决问题的,所有组件对于测试来讲不需要掌握做了解即可每一个组件都可以作为一个主题进行研究,并且有各种书籍作为介绍,对于测试来讲核心还是掌握测试的方法和原理是根本,开发来讲可能就是对jar包开发的开发人员掌握java语言,对组件也简单了解,架构就要对各种组件进行深入了解了,这是我对微服务的理解,希望能帮助到大家,后续随着技术的发展可能又会延伸出其他框架,需要我们保持不断的学习。

Original: https://www.cnblogs.com/Skywal/p/15883555.html
Author: 天行者_sky
Title: 微服务架构项目浅析

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/613003/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 27. rz与sz上传下载文件

    工作中需要在 Linux 和 Windows 之间传输文件,一般使用xftp等gui工具完成。但是有些第三方linux命令也可以完成上传下载操作 从Linux下载文件到本机 , 在…

    Linux 2023年5月27日
    079
  • CRC校验

    ​ 一:CRC概念 1.1、参考博客 参考的教程如下: 手算CRC及其实现 CRC校验算法原理分析 一文讲透CRC校验码-附赠C语言实例 CRC校验(手算与直观演示) CRC(循环…

    Linux 2023年6月13日
    085
  • shell 中使用 diff 比较两条命令的输出

    直接给出命令: diff <(command1) <(command2)< code></(command1)> 原理: 使用了进程替换的语法,…

    Linux 2023年6月14日
    091
  • linux编译安装nginx

    本文升级过程,适用于大部分nginx编译版本 常用编译选项说明nginx大部分常用模块,编译时./configure –help以–without开头的都默认安装。 –prefix…

    Linux 2023年5月27日
    082
  • Kubernetes 安装Redis集群

    一、Operator 以集群模式安装 可以在service_account和 operator后面加-n 参数指定namespace 这个yaml文件中使用的资源较高,测试环境可能…

    Linux 2023年5月28日
    065
  • python中的cls和self区别

    self:Always use self for the first argument to instance methods self是作为类进行实例化传递的第一个参数,也就是我…

    Linux 2023年6月14日
    091
  • windows系统cmd切换盘符路径命令失效

    问题描述:比如当我在C盘想切换到D盘的某个文件夹路径下时 只是输出了那个路径 但是并没有真的切换 这时候需要再多操作一步就会成功了 Original: https://www.cn…

    Linux 2023年6月14日
    086
  • zabbix模板,角色,用户,权限管理

    用户管理 用户组 用户角色 用户 模板管理 模板组 模板 posted @2022-09-07 22:22 溜溜威 阅读(14 ) 评论() 编辑 Original: https:…

    Linux 2023年6月7日
    095
  • vi和vim文本编辑器

    vi和vim文本编辑器 vi和vim模式的相互切换 快捷键使用案例 拷贝当前行yy; 拷贝当前行向下的5行 5yy; 并粘贴(p) 删除当前行dd; 删除当前行向下的5行 5dd …

    Linux 2023年6月11日
    096
  • WPF 应用启动过程同时启动多个 UI 线程且访问 ContentPresenter 可能让多个 UI 线程互等

    在应用启动过程里,除了主 UI 线程之外,如果还多启动了新的 UI 线程,且此新的 UI 线程碰到 ContentPresenter 类型,那么将可能存在让新的 UI 线程和主 U…

    Linux 2023年6月6日
    090
  • CSAPP 之 CacheLab 详解

    前言 本篇博客将会介绍 CSAPP 之 CacheLab 的解题过程,分为 Part A 和 Part B 两个部分,其中 Part A 要求使用代码模拟一个高速缓存存储器,Par…

    Linux 2023年6月7日
    0134
  • HTS恢复检查脚本

    #!/bin/bash #program:HTS-A数据库和插件检查 #author:sundz #version 20220531 v1 创建脚本 生成sql的表和字段汇总;ab…

    Linux 2023年6月7日
    094
  • POJ1222、POJ3279、POJ1753–Flip

    为什么将着三个题放一起讲呢?因为只要搞明白了其中一点,就可以一次3ac了~~ 首先讲下每个题目的意思 1.EXTENDED LIGHTS OUT 给你5行6列的01矩阵,0代表该点…

    Linux 2023年6月7日
    0105
  • docker的基本使用

    一、 实验前置知识 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是…

    Linux 2023年6月13日
    079
  • TCP/UDP 编程模型

    TCP编程模型 server创建socket套接字 socket套接字–可以理解为文件描述符(file descriptor),UNIX把网络看成文件 /** * @p…

    Linux 2023年6月6日
    0104
  • Linux网络配置

    第一种 通过编辑网络配置文件/etc/sysconfig/network-scripts/ifcfg-ens32 -> TYPE=Ethernet -> #网卡类型是以…

    Linux 2023年5月27日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球