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

文章目录

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


前言

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


一、各种架构的演进

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

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

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

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

二、微服务架构

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

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

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

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

落地思路

ngnix 配置负载均衡


upstrem ServeName {server 127.0.0.1:3333server 127.0.0.1:6666server 127.0.0.1:9999
}server {listent 8080server_name localhostlocation / {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.mzph.cn/news/580128.shtml

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

相关文章

Linux6.4、IO基础(整体深入理解文件描述符)

个人主页:Lei宝啊 愿所有美好如期而遇 前言 本文章将从源码和内核剖析fd,细节和基础部分可以了解: 我们再来提起文件,文件可以分为两类: 磁盘文件 (未被打开)内存文件 (被进程在内存中打开) 同时我们也知道文件描…

logstash收集华为、H3C、Cisco交换机日志

网络设备配置 将 syslog-ip 替换成服务器的IP地址。 Huawei info-center loghost source interface info-center loghost syslog-ip local-time facility local6 H3C info-center loghost source interface info-center loghost syslog-ip facility local5 Aruba logging arm …

OAuth2授权码模式---详解

OAuth2简介 是一个业界标准的授权协议(authorization protocol),这里的授权是以委派代理(delegation)的方式。可以这样理解,OAuth 2.0提供一种协议交互框架,让某个应用能够以安全地方式获取到用…

目标检测-Two Stage-SPP Net

文章目录 前言一、SPP Net 的网络结构和流程二、SPP的创新点总结 前言 SPP Net:Spatial Pyramid Pooling Net(空间金字塔池化网络) SPP-Net是出自何凯明教授于2015年发表在IEEE上的论文-《Spatial Pyramid Pooling in Deep ConvolutionalNetw…

模具图纸管理系统、模具图纸管理系统有哪些?

模具图纸管理系统是一种用于管理和跟踪模具图纸的软件系统。该系统可以帮助企业有效地组织、管理和分享模具图纸,从而提高生产效率、降低成本和减少错误。 以下是模具图纸管理系统的一些基本功能: 1、文件管理:将模具图纸存储在一个中心化的…

工具系列:PyCaret介绍_编写和训练自定义机器学习模型

文章目录 PyCaret安装PyCaret👉 让我们开始吧👉 数据集👉 数据准备PyCaret中的设置函数👉 可用模型👉 模型训练与选择👉 编写和训练自定义模型👉 GPLearn模型👉 NGBoost 模型&#x…

浅谈Redis分布式锁(下)

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 自定义Redis分布式锁的…

SpringIOC之ApplicationContextAwareProcessor

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

Java 将PDF 转为图片 工具 【Free Spire.PDF for Java】(免费版)

Java 将PDF 转为图片 使用工具:Free Spire.PDF for Java(免费版) Jar文件获取及导入: 方法1:通过官网下载jar文件包。下载后,解压文件,并将lib文件夹下的Spire.Pdf.jar文件导入Java程序。 方…

flex--伸缩性

1.flex-basis flex-basis 设置的是主轴方向的基准长度,会让宽度或高度失效。 备注:主轴横向:宽度失效;主轴纵向:高度失效 作用:浏览器根据这个属性设置的值,计算主轴上是否有多余空间&#x…

C语言操作符详情

C语言操作符详情 是否控制求值顺序中 只有“&&”“?!”“,”“||”为“是” 其余均为“否”

模拟EXCEL排序

7-78 模拟EXCEL排序 分数 25 全屏浏览题目 作者 陈越 单位 浙江大学 Excel可以对一组纪录按任意指定列排序。现请编写程序实现类似功能。 输入格式: 输入的第一行包含两个正整数N(≤105) 和C,其中N是纪录的条数,C是指定排序的列号。之后有 N行&am…

Debezium发布历史30

原文地址: https://debezium.io/blog/2018/03/08/creating-ddd-aggregates-with-debezium-and-kafka-streams/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. 使用 Debezium 和 Kafka Streams 创建 …

Redis Streams在Spring Boot中的应用:构建可靠的消息队列解决方案【redis实战 二】

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Redis Streams在Spring Boot中的应用:构建可靠的消息队列解决方案 引言前言Redis Streams的基本概念和特性1. 日志数据结构2. 消息和字段3. 消费者组4. 消息ID5. 实时和历史数据处理6. 性能…

7.3 uvm_config_db in UVM

uvm_config_db类派生自uvm_resource_db类。它是uvm_resource_db顶部的另一层便利层,简化了用于uvm_component实例的基本接口(资源库的访问方法)。 下面uvm_config_db类的代码段取自uvm源代码。 class uvm_config_db#(type Tint) extends uv…

html之为什么使用表单,常用表单元素使用?

文章目录 一、为什么使用表单呢?二、常用表单元素使用三、总结 一、为什么使用表单呢? 为什么使用表单呢,使用表单是为了更好的收集用户数据,并且安全 二、常用表单元素使用 1、password密码框 密码框:会隐藏数据&a…

网络摄像头爆破实战

*** 重要说明:仅用于交流网络安全测试技术,并唤起大家对网络安全的重视,如用本文的技术干违法的事情,博主概不负责。*** 文章目录 前言1. 发现摄像头2. 发现端口3. 确定品牌信息4. 确定RTSP地址5. 获取视频流6. 获取密码7. 再次获…

flutter学习-day20-使用SafeArea组件处理各机型的安全距离

📚 目录 介绍分析示例和效果图特殊情况 1. 介绍 安全区域,指的是移动端设备的可视窗口范围。处于安全区域的内容不受圆角、刘海屏、iPhone 小黑条、状态栏等的影响,也就是说,我们要做好适配,必须保证页面可视、可操作…

亚马逊鲲鹏系统全自动化操作注册下单更快捷

亚马逊鲲鹏系统的强大崛起,让买家号的注册、养号、下单留评等繁琐任务迎来了一场全新的自动化革命。这一创新性软件系统的横空出世,为广大亚马逊卖家提供了一种高效、智能的解决方案,成功摆脱了繁重的手动操作。 在这一系统中,买家…

安卓恢复指南:五种安卓数据恢复软件推荐

我们的手机随身携带。我们抓住他们快速拍照、发送消息并保持娱乐。有时我们对它们过于冒险,将它们扔在混凝土或水中,安装我们不应该安装的软件,然后将它们留在电影中或公园的长椅上。 如果您要在任何地方丢失重要数据,很可能是在…