栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

微服务架构概述

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

微服务架构概述

文章目录
  • 一、应用架构的发展
  • 二、单体应用架构
    • 单体架构优点
    • 单体架构缺点
  • 三、分布式架构
    • 面向服务SOA架构
      • SOA架构的优点
      • SOA架构的缺点
      • 技术难点
    • 微服务架构
    • 微服务解决方案
      • 1. 基于Spring Cloud 的微服务解决方案
      • 2. 基于Dubbo实现微服务解决方案


一、应用架构的发展

应用是可独立运行的程序代码,并对外提供相应的业务功能。软件架构类型一般分为三种:业务架构、应用架构、技术架构。业务架构决定应用架构,技术架构支持应用架构。
架构的发展历程是从单体架构、分布式架构、SOA架构再到微服务架构。

二、单体应用架构

单体架构在JAVA领域可以理解为平时发布的Java Web应用程序,包含表现层、业务层、数据访问层。从Controller到Service再到Dao层,所有的业务功能都在同一个应用中。开发完毕之后就会出现一个超大型的jar或是war包。

单体应用简单架构图

单体架构优点
  1. 易于开发:使用开发工具可以在短时间内开发出单体应用。
  2. 易于调试:不需要依赖外部接口,测试可以节约很多时间。
  3. 易于部署:只要将应用部署到运行环境即可。
单体架构缺点
  1. 灵活度不够:因为软件存在相互依赖,修改一处可能需要其他人员配合,只有大家都完成了才能完成程序部署,降低了团队的灵活性。
  2. 系统启动慢:一个应用程序包含所有功能,设计需要启动的模块过多,导致程序启动时间延迟。
  3. 系统扩展性能比较差:软件功能越多,修改其中一个功能可能影响到其他功能的可能性越大,在修改的时候就需要从全局考虑。从全局去添加,而牵一发而动全身。
三、分布式架构

分布式架构:按照业务进行垂直切分,切分后每个应用都是单体架构。

面向服务SOA架构

面向服务的架构是一种软件体系结构,其应用程序的不同组件通过网络上的通信协议向其他组件提供服务或消费服务,所以也是一种分布式架构。
SOA是不同业务建立不同的服务,服务之间的数据交换粗粒度可以通过服务接口接口分级,这样松散磨合提供软件的可重用性,也可让业务逻辑变得可组合,并且每个服务可以根据使用情况做出合理的分布式部署,从而让服务变得规范、高性能、高可用。

SOA架构的优点
  1. 模块化: 应用拆分成不同的模块,使用接口通信,降低模块之间的耦合度。
  2. 拆分成若干个子项目,不同的团队负责不同的子项目。
  3. 新增功能:只需要添加一个子项目,调用其他系统接口即可。
  4. 不同的应用可以部署在自己想要部署的环境。
SOA架构的缺点
  1. 系统之间远程调用,接口开发增加工作量。
技术难点
  1. 系统间调用接口的编写,需要自己完成全套调用(服务定位,接口协议,网络服务、负载均衡、熔断机制)
  2. 服务的管理:服务的上下线导致其他应用调用的时候服务不可用。
  3. 服务配置管理:服务分布在不同的机器上、且服务众多。需要统一管理配置文件。
  4. 链路监控:一个请求经过哪些服务的监控。
  5. 网关:统一服务路口和服务转发。
微服务架构

微服务架构在某种程度上是SOA架构的继续发展的下一步,提供各种基础组件服务,从而使开发人只需要关注业务开发。
对于一个大型复杂的业务系统,它的业务功能可以查分为多个相互独立的微服务,各个微服务之间是松耦合的,通过各种远程协议进行同步、异步通信,各个微服务均可独立不是、扩/缩容以及升/降级。

微服务架构技术选型如下

Spring CloudDubboMotanMSEC其他
功能微服务完整方案服务治理框架服务治理框架服务开发运维框架略
通信方式REST/HttpRPC协议RPC/Hessian2Protocol buffergrpc, thrift
服务发现/注册Eureka(AP)ZK, NacosZK,Consul服务发现Etcd
负载均衡Ribbion客户端负载客户端负载客户端负载Nginx+Lua
容错机制6种容错策略6种容错策略2种容错策略自动容错Keepalived、HeartBeat
熔断机制Hystrix无无提供过载保护无
配置中心Spring Cloud ConfigNacos无无Apollo,Nacos
网关Gateway, Zull无无无自研、Kong
服务监控Hystrix + TurbineDubbo+Monitor无MonitorELK
链路监控Sleuth + Zipkin无无无Pinpoint
多语言Rest支持多语言JavaJavaJava, C++, PHPJava, PHP, Node.js
社区活跃高高(阿里)一般未知略
微服务解决方案

现有的微服务架构技术,都为我们提供了完整的技术解决方案。

1. 基于Spring Cloud 的微服务解决方案

Spring Cloud的技术选型可以继承Spring Boot和Spring中的技术和原理,且Spring Cloud融合了很多优秀的组件。

组件方案1方案2方案3
服务发现EurekaConsul etcd、Nacos(阿里)
共有组件服务间调用组件Feign、负责均衡组件Ribbon、熔断器Hystrix
网关Gateway:高性能,Zull:性能低自研网关中间件
配置中心Spring Cloud Config、Apollo(携程)、Nacos(阿里)
全链路监控Zikpin、Pinpoint、Skywalking
搭配使用分布式事物、Spring Cloud与DDD、gRPC
2. 基于Dubbo实现微服务解决方案

Dubbo是阿里开源基于JAVA实现的分布式服务治理框架,专注于RPC领域。并积极适配其他开源解决方案。
Nacos:定位是一个更易于帮助构建云原生应用的动态发现、配置和服务管理平台。
基于Dubbo的解决方案是:Dubbo+Nacos+其他。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007617.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号