优点
- 易于开发
- 易于测试
- 易于部署
- 易于水平伸缩(节点复制)
缺点
- 代码膨胀,难以维护(灵活度不够)
- 构建、部署成本大
- 新人上手困难
- 降低系统性能
- 启动慢
- 扩展性差
1.4、集群:负载均衡
随着访问量的变大,一个Tomcat服务器已经不能满足需要。
需要配置多个Tomcat,做Tomcat集群,通过负载均衡服务器访问不同的Tomcat服务器,每个Tomcat中部署完整项目即可
1.6、面向服务的SOA架构
SAO架构有两个主要角色:服务的提供者(provider)、服务的消费者(consumer)。阿里的Dubbo的SOA的一个典型实现
将工程拆分成表现层和服务层两个工程,
服务层中包含业务逻辑,只需要对外提供服务即可。
服务层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现
优点
- 模块拆分,使用接口通信,降低了模块之间的耦合度
- 把一个大项目拆分成多个子项目,可以并行开发
- 增加功能时只需要增加一个子项目,调用其他系统接口即可
- 可以灵活分布式部署
缺点
- 单一职责
- 轻量级通信
- 隔离性
- 业务数据的独立性(有自己的数据)
- 技术多样性
- Eureka:注册中心,用于注册所有服务(项目/应用)
- Ribbon:负载均衡,用于搭建集群的。(同一个功能多个tomcat,ribbon帮着选择一个tomcat)
- Zuul 关:确定统一入口,方便进行管理。
- Feign:服务与服务之间调用。类似HttpClient
- Hystrix:熔断器,与正主断了联系,使用备胎。
1.7、微服务架构
微服务架构是一种架构风格,对于大型复杂的业务系统,可以将业务功能拆分成多个相互独立的微服务,各个微服务之间是松耦合的,通过各种远程协议进行通信,各个微服务可,以及
微服务技术选型对比
Spring Cloud | Dubbo | Motan | MSEC | 其他 | |
---|---|---|---|---|---|
功能 | 微服务完整方案 | 服务治理框架 | 服务治理框架 | 服务开发运营框架 | 略 |
通信方式 | REST / http | RPC 协议 | RPC / Hessian2 | Protocol Buffers | gRPC、thrift |
服务发现 / 注册 | Eureka(AP) | ZK、Nacos | ZK / Consul | 只有服务发现 | Etcd |
负载均衡 | Ribbon | 客户端负载 | 客户端负载 | 客户端负载 | Ngnix + Lua |
容错机制 | 6 种 | 6 种 | 2 种 | 自动容错 | keepalived、heartbeat |
熔断机制 | Hystrix | 无 | 无 | 过载保护 | 无 |
配置中心 | Spring Cloud Config | Nacos | 无 | 无 | Apollo、Nacos |
关 | Zuul、Gateway | 无 | 无 | 无 | Kong、自研 |
服务监控 | Hystrix + Turbine | Dubbo + Monitor | 无 | Monitor | ELK |
链路监控 | Sleuth + Zipkik | 无 | 无 | 无 | Pinpoint |
多语言 | REST 支持多语言 | Java | Java | Java、C++、PHP | Java、PHP、Node.js |
区活跃度 | 高(Spring) | 高(阿里) | 一般 | 未知 | 略 |
2、什么是微服务/h2>
微服务是一种架构风格,即将单体应用划分为小型的服务单元。
使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联(应用程序之间远程调用进行通信),并且它们可以通过自动化的方式部署。
1、完全独立的一个最小个体(可以独立运行)
2、个体与个体之间,通过远程调用进行访问。例如:基于RESTFul风格的
3、通过注册中心,将不同个体可以进行整合。
4、通过 关,可以进行统一的入口访问。
特征:
3、Spring Cloud
3.1、这里先讲一下中间件的概念
中间件:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算器资源和 络通讯。是连接两个独立应用程序或独立系统的软件。
常见的中间件:
、、、、、、、、等。
3.2、什么是Spring Cloud
SpringCloud就是用于构建微服务开发和治理的框架集合。
Spring Cloud 像是一个中间件,基于 开发,提供一套完整的微服务解决方案。包括、、、、、、、等选型的中立的开源组件,可以随需扩展和替换组装。
3.3、基于Spring Cloud的微服务解决方案
1、公用组件:服务调用:Feign、负载均衡:Ribbon、熔断器:Hystrix
2、 关:Eureka、Consul 使用 zuul(性能低)、SpringCloud Gateway(性能高);etcd、Nacos 使用自研 关
3、配置中心:SpringCloud Config、携程 Apollo、阿里 Nacos
4、Zipkin、Pinpoint、SkyWalking(推荐)
5、分布式事务、Docker、gRPC、领域驱动 Halo
3.4、Spring Cloud项目常见模块

组件名称 | 所属项目 | 组件分类 |
---|---|---|
Eureka | spring-cloud-netflix | 注册中心 |
Zuul | spring-cloud-netflix | 第一代 关 |
Sidecar | spring-cloud-netflix | 多语言支持 |
Ribbon | spring-cloud-netflix | 负载均衡 |
Hystrix | spring-cloud-netflix | 熔断器 |
Turbine | spring-cloud-netflix | 集群监控 |
Feign | spring-cloud-openfeign | 声明式的 HTTP 客户端 |
Consul | spring-cloud-consul | 注册中心 |
Gateway | spring-cloud-gateway | 第二代 关 |
Sleuth | spring-cloud-sleuth | 链路监控 |
Config | spring-cloud-config | 配置中心 |
Bus | spring-cloud-bus | 总线 |
Pipeline | spring-cloud-pipelines | 部署管道 |
Dataflow | spring-cloud-dataflow | 数据处理 |
Stream | spring-cloud-stream | 消息驱动 |
服务治理中间件
服务治理中间件包含:、、、、等。 其中,服务路由包含:、、、、等。 负载均衡包含:支持根据目标状态和目标权重进行负载均衡。 自我保护包含:、、
借鉴简书上的一位大神
原地址:https://www.jianshu.com/p/0a8f29842a6f
SpringClound:https://www.processon.com/view/link/5c3ec3cce4b0641c83ddee05
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91337 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!