优点
- 易于开发
- 易于测试
- 易于部署
- 易于水平伸缩(节点复制)
缺点
- 代码膨胀,难以维护(灵活度不够)
- 构建、部署成本大
- 新人上手困难
- 降低系统性能
- 启动慢
- 扩展性差
1.4、集群:负载均衡
随着访问量的变大,一个Tomcat服务器已经不能满足需要。
需要配置多个Tomcat,做Tomcat集群,通过负载均衡服务器访问不同的Tomcat服务器,每个Tomcat中部署完整项目即可
1.6、面向服务的SOA架构
SAO架构有两个主要角色:服务的提供者(provider)、服务的消费者(consumer)。阿里的Dubbo的SOA的一个典型实现
将工程拆分成表现层和服务层两个工程,
服务层中包含业务逻辑,只需要对外提供服务即可。
服务层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现
优点
- 模块拆分,使用接口通信,降低了模块之间的耦合度
- 把一个大项目拆分成多个子项目,可以并行开发
- 增加功能时只需要增加一个子项目,调用其他系统接口即可
- 可以灵活分布式部署
缺点
- 系统之间需要远程通信,增加了开发的工作量
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:注册中心,用于注册所有服务(项目/应用)
- Ribbon:负载均衡,用于搭建集群的。(同一个功能多个tomcat,ribbon帮着选择一个tomcat)
- Zuul 网关:确定统一入口,方便进行管理。
- Feign:服务与服务之间调用。类似HttpClient
- Hystrix:熔断器,与正主断了联系,使用备胎。
组件名称 所属项目 组件分类 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进行处理,非常感谢!