当前位置: 首页 > news >正文

微服务发展历程

服务架构演进

服务架构演进图

服务架构演进过程:抽取各个模块独立维护,独立部署的过程。

初创公司2 ~ 3个研发人员,ALL IN ONE 的框架开发效率最高。随着队伍的壮大,产品,用户,商品成立独立小组,拆出相应的模块,独立维护,相互不影响,根据不同流量,分配不同的服务器。然而也带来了问题:业务之间的相互调用问题。于是不同部门将一些公共服务,抽取出来,做成rpc 服务,供其他兄弟部门调用。

ALL IN ONE

ALL IN ONE

关键点:数据访问层(ORM)是关键。

优点:

  1. 简单。
  2. 减少部署节点和成本。

缺点:

  1. 扩展不容易。
  2. 不易系统开发。
  3. 商品的bug,可能影响到用户服务的稳定性

垂直应用架构

垂直应用架构

关键点:前端页面开发的 Web 框架(MVC)是关键。

每个独立应用:页面,http 服务,数据库。

独立扩展:用户量和商品访问量大了,增加对应的服务器就可以了。

独立开发,互补干扰。

性能扩展方便。

缺点:

  1. 无法做到页面和业务逻辑的实现分离。页面改动频繁,业务逻辑修改较少。
  2. 业务逻辑无法完全独立,大量应用需要交互。订单系统:需要用户和商品的服务。支付也需要用户的信息等等。

分布式服务架构

分布式服务框架

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服
务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,
用于提高业务复用及整合的分布式服务框架(RPC)是关键。

抽取出:Web 页面 和 rpc 服务。

因为web 和 业务服务不在同一台服务器。需要远程调用,所以上rpc(远程过程调用)。

注册中心

注册中心

通过注册中心:治理服务。

服务发现,服务动态扩容。

流动计算架构

https://martinfowler.com/articles/microservices.html

微服务

优点:

  1. 每个服务足够内聚,足够小

微服务技术栈:

微服务条目落地技术备注
服务开发SpringBoot,Spring,SpringMVC
服务配置与管理Neffix 的 Archaius,阿里的Diamond
服务注册与发现Eureka,Consul,ZooKeeper,Nacos
服务调用Ribbon,Rest,RPC,GRPC
服务熔断Hystrix,Envoy,sentienl
负载均衡Ribbon,Nginx 等
服务接口调用(客户端调用服务的简化工具)Feign等
消息队列Zuul等
服务配置中心管理Zabbix,Negios,Metrics,Spectator,Nacos
服务路由(API 网管)Zuul等
服务监控Zabbix,Negios,Metrics,Spectator等
全链路追踪Zipkin,Brave,Dapper等
数据流操作开发包Spring Cloud Stream(封装与Redis,Kafka等发送接受消息)
事件消息总线Spring Cloud Bus,Nacos
服务部署Docker,OpenStack,Kubernetes等

主流 IT 公司:

阿里:Dubbo/HSF

京东JSF

新浪微博Motan

当当网 DubboX

Netflix/Spring cloudNetflix/Spring cloudMotanGRPCThriftDubbo/DubboX
功能定位完整的微服务框架RPC 框架,但组合了ZK或Consul,实现集群环境的基本的服务注册/发现RPC 框架RPC 框架服务框架
支持Rest是,Ribbon 支持多种可插拔的序列化选择
支持RPC是(Hession2)
服务注册/发现
负载均衡是(服务端zuul+客户端Ribbon)是(客户端)是(客户端)
服务配置
支持多语言是(Rest 形式)是(客户端)

创建微服务模块步骤:

  1. 建 module
  2. 该 POM
  3. 写 YML
  4. 启动类
  5. 业务类

业务类:

  1. 写 SQL
  2. entities
  3. dao
  4. service
  5. controller
http://www.lryc.cn/news/457522.html

相关文章:

  • 提示词优化、GPTs逆向工程、大语言模型原理、大语言模型优化、开源模型本地私有化部署、从零构建大语言模型、智能体构建以及大语言模型的发展趋势
  • nn.Conv2d(二)
  • 获取鸿蒙设备Udid遇到的问题
  • 【华为HCIP实战课程十】OSPF网络DR和BDR实战讲解,网络工程师
  • 视频怎么去除杂音保留人声?让人声更动听!视频噪音处理攻略
  • 洗衣店数字化转型:Spring Boot订单管理
  • Koa学习
  • linux线程 | 线程的概念
  • 2024年软件设计师中级(软考中级)详细笔记【3】数据结构(下)(分值5分)
  • WPF|依赖属性SetCurrentValue方法不会使绑定失效, SetValue方法会使绑定失效?是真的吗?
  • Windows搭建Java开发环境(Building a Java development environment on Windows)
  • 用FPGA做一个全画幅无反相机
  • 使用 Go 语言与 Redis 构建高效缓存与消息队列系统
  • springboot 整合spring ai实现 基于知识库的客服问答
  • 云原生(四十九) | WordPress源码部署
  • Spring Boot 集成 LiteFlow 实现业务流程编排
  • 在 Android Studio 中引入android.os.SystemProperties
  • 代码随想录算法训练营总结
  • 【uniapp】使用uniapp实现一个输入英文单词翻译组件
  • 6. 继承、重写、super、final
  • Redis 其他类型 渐进式遍历
  • 科研绘图系列:R语言绘制SCI文章图2
  • ARM知识点三和串口代码的编写流程
  • 【unity踩坑】打开vs2022没有文字联想/杂项文件
  • WebGoat JAVA反序列化漏洞源码分析
  • 大数据-161 Apache Kylin 构建Cube 按照日期、区域、产品、渠道 与 Cube 优化
  • uni-app使用v-show编译成微信小程序的问题
  • 充电宝租赁管理系统网站毕业设计SpringBootSSM框架开发
  • 喜讯!迈威通信TSN产品通过“时间敏感网络(TSN)产业链名录计划”评测,各项指标名列前茅
  • 国产工具链GCKontrol-GCAir助力控制律开发快速验证