Java Web架构篇之分布式框架(微服务&SpringCloud&Dubbo)简介 - Go语言中文社区

Java Web架构篇之分布式框架(微服务&SpringCloud&Dubbo)简介


SOA与微服务架构

 SOA与微服务架构区别

参考:
SOA架构和微服务架构的区别
微服务架构 vs. SOA架构
SOA 服务架构之简介及理解


领域驱动架构

微服务系统的设计自然离不开DDD(Domain-Driven Design,领域驱动设计),它由Eric Evans提出,是一种全新的系统设计和建模方法。DDD事实上是针对面向对象分析和设计的一个扩展和延伸,对技术架构进行了分层规划,同时对每个类进行了策略和类型的划分。领域模型是领域驱动的核心。领域模型通过聚合(Aggregate)组织在一起,聚合间有明显的业务边界,这些边界将领域划分为一个个限界上下文(Bounded Context)。采用DDD的设计思想,业务逻辑不再集中在几个大型的类上,而是由大量相对小的领域对象(类)组成,这些类具备自己的状态和行为,每个类是相对完整的独立体,并与现实领域的业务对象映射。领域模型就是由许多这样的细粒度的类组成的。基于领域驱动的设计,保证了系统的可维护性、可扩展性和可复用性,在处理复杂业务逻辑方面有着先天的优势。

更多:
领域驱动模型&CQRS学习


SpringBoot

SpringBoot简介

spring boot 它的设计目的就是为例简化开发,开启了各种自动装配,你不想写各种配置文件,引入相关的依赖就能迅速搭建起一个web工程。它采用的是建立生产就绪的应用程序观点,优先于配置的惯例。

SpringBoot设计思想

  • 约定优于配置
  • 开箱即用

SpringBoot模块设计

  • 支持开箱即用
  • 支持覆写模块内的部分组件
  • 支持模块全部推翻重写

如何自定义一个spring-starter模块

  • 项目添加spring-boot-autoconfigure依赖
  • 配置映射参数实体
  • 编写自定义业务
  • 实现自动化配置
  • 自定义spring.factories,META-INF中spring.factories添加自定义的starter

参考:
SpringBoot非官方教程 | 终章:文章汇总
SpringBoot常用注解及应用启动流程
springboot自定义Starter
Spring Boot入门教程(三十一): 自定义Starter
Spring boot题目整理
吐血整理 20 道 Spring Boot题目
Spring 技术系列干货 SpringBoot & SpringCloud


SpringCloud

SpringCloud概述

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包

以下为Spring Cloud的核心功能:

  • 分布式/版本化配置
  • 服务注册和发现
  • 路由
  • 服务和服务之间的调用
  • 负载均衡
  • 断路器
  • 分布式消息传递

SpringCloud组件


通过这张图,我们来了解一下各组件配置使用运行流程:

  • 1、请求统一通过API网关(Zuul)来访问内部服务.
  • 2、网关接收到请求后,从注册中心(Eureka)获取可用服务
  • 3、由Ribbon进行均衡负载后,分发到后端具体实例
  • 4、微服务之间通过Feign进行通信处理业务
  • 5、Hystrix负责处理服务超时熔断
  • 6、Turbine监控服务间的调用和熔断相关指标

更多:
拜托!面试请不要再问我Spring Cloud底层原理

参考:
史上最简单的 SpringCloud 教程 | 终章
Spring cloud框架介绍


Dubbo

概述

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)

其核心部分包含:

  1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
  2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
  3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

Dubbo能做什么

  • 1、透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
  • 2、软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
  • 3、服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

Dubbo的架构

架构图如下:

节点角色说明:

  • Provider: 暴露服务的服务提供方。
  • Consumer: 调用远程服务的服务消费方。
  • Registry: 服务注册与发现的注册中心。
  • Monitor: 统计服务的调用次调和调用时间的监控中心。
  • Container: 服务运行容器。

参考:
Dubbo是什么
Dubbo详细介绍与安装使用过程
Dubbo与zookeeper的关系
Dubbo官方文档


Dubbo 与Spring Cloud

  • dubbo由于是二进制的传输,占用带宽会更少
  • springCloud是http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大
  • dubbo的开发难度较大,原因是dubbo的jar包依赖问题很多大型工程无法解决
  • springcloud的接口协议约定比较自由且松散,需要有强有力的行政措施来限制接口无序升级
  • dubbo的注册中心可以选择zk,redis等多种,springcloud的注册中心只能用eureka或者自研

参考:
比较spring cloud和dubbo,各自的优缺点是什么

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zangdaiyang1991/article/details/92655044
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-28 02:39:42
  • 阅读 ( 1681 )
  • 分类:架构

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢