什么是微服务架构以及落地思路

文章目录

  • 前言
  • 一、各种架构的演进
  • 二、微服务架构
        • 落地思路
  • 总结


前言

调用几个webapi就是微服务架构?或则是ngnix+webapi 集群就是微服务架构?这个文章带你弄懂微服务架构。


一、各种架构的演进

在这里插入图片描述
单体架构:放在一个服务器进程完成全部的后端处理,搞不定怎么办,那就搞多几台。

水平拆分:多台服务器,这时候也就是集群模式,多个服务器干一样的事情。

垂直拆分:多台服务器,处理不同的事情,写协作完成。

分布式 :一个请求,有时候需要多个进程服务互相调用。也就是多进程协作完成一个完整流程。(业务逼的,双11活动,大并发)
好处:可以扩充处理能力,独立部署,独立升级维护
坏处:如果处理 数据一致性问题 , 分布式锁等处理方案

二、微服务架构

微服务结构就是在分布式技术成熟后,通过分布式服务来拆分业务逻辑,完成解耦,并且通过一系列组建和方法论来解决落地问题

这套架构风格 + 落地标准 就是微服务架构

类比之前的三层架构
三层架构,UI - BLL - DAL 调用分层方法
微服务:每个服务就是方法,调用分布式服务, 推荐以DDD服务拆分而不是BLL式拆分

微服务的核心要求
高可用,可伸缩 : ngnix +任意节点都要集群 + 服务注册发现;调用问题–网关Gateway(服务熔断,负载均衡,路由转发,限流,超时,重试)

落地思路

ngnix 配置负载均衡


upstrem ServeName {
   server 127.0.0.1:3333
   server 127.0.0.1:6666
   server 127.0.0.1:9999
}

server {
   listent 8080
   server_name localhost
   location / {
     proxy_pass http://xxx/api/
   }
}

上述3台server启动后,通过ngnix负载均衡配置后,请求 http://localhost:8080/api/xx的时候,就会随机打到3台服务,当然可以通过配置权重等其他配置来达到特殊的需求配置;
当要频繁新增server或则减少server的时候,配置后需要手动改后,重启
ngnix reload -s
每次手动重启,效率低,浪费时间,就是浪费生命,那么怎么解决? 还得是自动化。。。。
Consul
这时候类似 consul 服务注册发现的解决方案
服务注册
通过consul注册实例,在consul后台,可以看到注册的实例列表;由他来控制。 那当实例启动的时候在consul注册后,当实例挂了,例如断电,实例想通知consul也做不到,这时候只能由consul自己来判断实例是否正常运作,用的手段就是Health Check 也就是心跳💗检测;
服务发现:
调用的注册的实例列表,也就是服务发现。获取后是一个实例数组。可以写逻辑代码来控制访问那个实例的权重等规则;

网关Gateway
解决方案eg: Kong ,Envoy ,Spring Cloud GateWay,Ocelot
1.交叉调用
2.多独立IP
3.服务安全
4.服务治理 - 缓存

SSO 分布式环境下,SSO(single sign on) 单点登录
1.http 无状态协议
2. Cookie–session
3. 共享存储
4. 客服端携带Token
网关完成多个微服务的鉴权授权,就是 SSO。

功能性要求
skyapm-全链路追踪-能看可视化看到请求链路,以及各种细节信息
apollo–分布式配置中心–可视化集中管理,提供回滚-通知等功能
EL-ELK-分布式日志-可视化集中管理,可搜索过滤
分布式锁
分布式事务

运维需求-DevOps
docker 容器化
300多docker-- K8s 完成容器编排 管理
Git- jenkins – CI/CD


总结

微服务架构也是从简单的架构例如单体架构,为了解决各种架构在实际应用的缺点,慢慢演进。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jackson进行Json反序列化对于一个小写字母开头后跟大写字母无法识别反序列成功问题

问题描述 json数据:{“pTargetId”:“123”} javaBean: Datapublic static class Test {private String pTargetId;}运行下面代码: public static void main(String[] args) throws JsonProcessingException {String json "{\"pT…

Echarts使用,Echarts图表自适应窗口大小

Echarts官方文档 1.下载Echarts 项目打打开终端直接通过命令 npm install echarts --save 下载完成后在项目package.json查看。 2.使用Echarts 引入方式有两种全局引入和局部引入 全局引入直接在项目main.js引入放到vue原型上。 import * as echarts from echarts Vue.pr…

基于EMD的滚动轴承故障诊断算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1EMD的基本原理 固有模态函数(IMF) 筛分过程 4.2 基于EMD的滚动轴承故障诊断算法 信号预处理 EMD分解 特征提取 故障诊断 5.算法完整程序工程 1.算法运行效…

【Web】Ctfshow Thinkphp5 非强制路由RCE漏洞

目录 非强制路由RCE漏洞 web579 web604 web605 web606 web607-610 前面审了一些tp3的sql注入,终于到tp5了,要说tp5那最经典的还得是rce 下面介绍非强制路由RCE漏洞 非强制路由RCE漏洞原理 非强制路由相当于开了一个大口子,可以任意调用当前框…

如何高效的在 Linux 环境下配置 yum 源?

作者:JackTian 来源:公众号「杰哥的IT之旅」 ID:Jake_Internet 链接:如何高效的在 Linux 环境下配置 yum 源? 方法一:使用脚本的方式创建本地 YUM 仓库 首先,脚本开始时检查光盘是否已经挂载。…

磁盘管理-------磁盘分区

目录 引导语: 一、磁盘分区概念及作用 二、磁盘分区 (一)添加磁盘 (二)创建分区 (三)创建文件系统 (四)挂载 (五)永久挂载 三、扩展分区…

Android画布Canvas drawPath绘制跟随手指移动的圆,Kotlin

Android画布Canvas drawPath绘制跟随手指移动的圆,Kotlin import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path import android.os.Bundle import android.…

SSM驾校预约管理系统----计算机毕业设计

项目介绍 本项目分为管理员、教练、学员三种角色, 管理员角色包含以下功能: 学员管理、教练管理、车辆管理、关系管理、车辆维修管理、个人中心等功能。 教练角色包含以下功能: 我的课程、我的学员、车辆中心、个人中心等功能。 学员角色包…

《对话品牌》——数字化心理科学的变革

本期节目《对话品牌》栏目组邀请到了广东云有心理咨询有限公司董事长袁红萍女士参加栏目录制,分享其企业故事,树立品牌形象,提升品牌价值! 节目嘉宾:袁红萍女士 节目主持人:董倩 节目播出平台&#xff1…

微生信 -- 0代码科研绘图,助力发高分文章

1,粘贴数据,一键出图 www.bioinformatics.com.cn微生信云平台以220多款在线绘图、分析模块为基础,致力于0代码在线分析数据,0代码在线绘制科研图片。让不会编写代码的科研工作者,贴贴数据,点点鼠标就能够进…

字节高级Java面试真题

今年IT寒冬,大厂都裁员或者准备裁员,作为开猿节流主要目标之一,我们更应该时刻保持竞争力。为了抱团取暖,林老师开通了《知识星球》,并邀请我阿里、快手、腾讯等的朋友加入,分享八股文、项目经验、管理经验…

【软件工程】漫谈增量过程模型:软件开发的逐步之道

🍎个人博客:个人主页 🏆个人专栏: 软件工程 ⛳️ 功不唐捐,玉汝于成 目录 前言: 正文 增量过程模型(Incremental Process Model) 主要特点和阶段: 优点&#xff1…

系列十二、Linux中安装Zookeeper

一、Linux中安装Zookeeper 1.1、下载安装包 官网:Index of /dist/zookeeper/zookeeper-3.4.11 我分享的链接: 链接:https://pan.baidu.com/s/14Hugqxcgp89f2hqGWDwoBw?pwdyyds 提取码:yyds 1.2、上传至/opt目录 1.3、解…

前端基础(三十七):属性结构数据进行关键字筛选

效果 核心源码 type MenuItem {label: string;key: string | number;icon?: React.ReactNode;children?: MenuItem[];type?: group; }function filterTreeData(tree: MenuItem[], keyword: string): MenuItem[] {return tree.filter((node: MenuItem) > {if (node.labe…

23款奔驰E300L升级几何多光束大灯 提升照明亮度

奔驰新款E300L升级几何多光束大灯,单侧的LED头灯分别由84颗独立的LED光源组成,与风挡玻璃上的立体摄像机配合,每秒钟可对路况进行100次扫描,针对不同的路况和驾驶状态,智能调整84个独立光源,星骏汇小许 Xjh…

余弦相似度算法

余弦相似度算法 是什么 余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。 余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性&q…

述职报告一般怎么写?

在日常生活中,我们经常需要撰写各种报告。对于报告的撰写,我们需要清晰地解释涉及的专业术语。现在,我为大家整理了一些精选的晋升述职报告范文,供大家参考和借鉴。希望这些范文能对大家有所帮助。 晋升述职报告范文精选1 一、个…

66.乐理基础-打拍子-小切分

之前的内容:65.乐理基础-打拍子-前附点、后附点-CSDN博客 小切分形容的是 两个十六分音符中间夹着一个八分音符,如图1. 图1:以四分音符为一拍的时候,它们三个加起来还是1拍,0.250.50.25加起来是1拍,也就是…

centos7 使用openssl 配置证书服务器(史上最详细版本)

背景 最近接到一个任务:由于我们的产品涉及使用数字证书进行签名、签章,如果需要使得签名签章暗具有法律效力,就必须使用权威CA中心颁发的数字证书,就需要小钱钱;但是对于测试来说,就可以适当减少小钱钱的…

WebLogic权限绕过(CVE-2020-14750)

漏洞描述: Oracle Fusion Middleware(Oracle融合中间件)是美国甲骨文(Oracle)公司的一套面向企业和云环境的业务创新平台。该平台提供了中间件、软件集合等功能。 Oracle WebLogic Server Oracle Fusion Middleware …
最新文章