SpringCloud微服务框架基础

一. 微服务架构

1.1 什么是分布式

不同模块部署在不同服务器上
作用:分布式解决网站高并发带来问题

1.2 什么是集群

多台服务器部署相同应用构成一个集群
作用:通过负载均衡设备共同对外提供服务

1.3 什么是RPC

RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。
它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。

1.4 什么是SOA

业务系统分解为多个组件,让每个组件都独立提供离散,自治,可复用的服务能力
通过服务的组合和编排来实现上层的业务流程
作用:简化维护,降低整体风险,伸缩灵活

1.5 什么是微服务

架构设计概念,各服务间隔离(分布式也是隔离),自治(分布式依赖整体组合)其它特性(单一职责,边界,异步通信,独立部署)是分布式概念的跟严格执行

二. 微服务的优缺点

微服务架构的优点:

  1. 每个服务都比较简单,只关注于一个业务功能。
  2. 微服务架构方式是松耦合的,可以提供更高的灵活性。
  3. 微服务可通过最佳及最合适的不同的编程语言与工具进行开发,能够做到有的放矢地解决针对性问题。
  4. 每个微服务可由不同团队独立开发,互不影响,加快推出市场的速度。
  5. 微服务架构是持续交付(CD)的巨大推动力,允许在频繁发布不同服务的同时保持系统其他部分的可用性和稳定性。

微服务架构的缺点:

  1. 微服务的一些想法在实践上是好的,但当整体实现时也会呈现出其复杂性。
  2. 运维开销及成本增加:整体应用可能只需部署至一小片应用服务区集群,而微服务架构可能变成需要构建/测试/部署/运行数十个独立的服务,并可能需要支持多种语言和环境。这导致一个整体式系统如果由20个微服务组成,可能需要40~60个进程。
  3. 必须有坚实的DevOps开发运维一体化技能:开发人员需要熟知运维与投产环境,开发人员也需要掌握必要的数据存储技术如NoSQL,具有较强DevOps技能的人员比较稀缺,会带来招聘人才方面的挑战。
  4. 隐式接口及接口匹配问题:把系统分为多个协作组件后会产生新的接口,这意味着简单的交叉变化可能需要改变许多组件,并需协调一起发布。在实际环境中,一个新品发布可能被迫同时发布大量服务,由于集成点的大量增加,微服务架构会有更高的发布风险。
  5. 代码重复:某些底层功能需要被多个服务所用,为了避免将“同步耦合引入到系统中”,有时需要向不同服务添加一些代码,这就会导致代码重复。
  6. 分布式系统的复杂性:作为一种分布式系统,微服务引入了复杂性和其他若干问题,例如网络延迟、容错性、消息序列化、不可靠的网络、异步机制、版本化、差异化的工作负载等,开发人员需要考虑以上的分布式系统问题。
  7. 异步机制:微服务往往使用异步编程、消息与并行机制,如果应用存在跨微服务的事务性处理,其实现机制会变得复杂化。
  8. 可测性的挑战:在动态环境下服务间的交互会产生非常微妙的行为,难以可视化及全面测试。经典微服务往往不太重视测试,更多的是通过监控发现生产环境的异常,进而快速回滚或采取其他必要的行动。但对于特别在意风险规避监管或投产环境错误会产生显著影响的场景下需要特别注意。

三. 什么是SpringCloud

构架图:
在这里插入图片描述
Spring Cloud 流应用程序启动器是基于SpringBoot的Spring集成应用程序,提供与外部系统的集成。Springcloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序

四. springCloud有什么优势

  • Spring Cloud 来源于 Spring,质量、稳定性、持续性都可以得到保证。
  • Spirng Cloud 天然支持 Spring Boot,更加便于业务落地。
  • Spring Cloud 发展非常的快
  • Spring Cloud 是 Java 领域最适合做微服务的框架。
  • Spring Cloud 对微服务周边环境的支持力度最大。
  • Spring Cloud 是微服务架构的最佳落地方案。

五. SpringCloud核心组件

1)Spring Cloud Eureka
服务的注册和发现中心;可以将自己定义的API 接口注册到Spring Cloud Eureka上服务的注册和发现,构成Eureka体系的包括:服务注册中心、服务提供者、服务消费者。
2)Spring Cloud Ribbon
客户端负载均衡器;Eureka只是维护了服务生产者、注册中心、服务消费者三者之间的关系,真正的服务消费者调用服务生产者提供的数据是通过Spring Cloud Ribbon来实现的。就是说服务消费者调用哪一个节点是由ribbon通过算法选择的。
3)Spring Cloud Feign
是一个声明web服务客户端,这使得编写Web服务客户端更容易,使用Feign 创建一个接口并对它进行注解, Spring Cloud 集成 Ribbon 和 Eureka 提供的负载均衡的HTTP客户端 Feign。Spring Cloud Feign 的出现使得Eureka和Ribbon的使用更为简单。
4)Spring Cloud Hystrix 断路器
防止对某一故障服务持续进行访问,配合降级,把错误的数据进行数据库记录
5)Spring Cloud Config
分布式配置中心组件 它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。Spring Cloud Config 组件中,分两个角色,一是Config Server,二是Config Client。Config Server用于配置属性的存储,存储的位置可以为Git仓库、SVN仓库、本地文件等,Config Client用于服务属性的读取。
6)Spring Cloud Zuul 服务网关
通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了统一降级,限流,权限,安全等功能。提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性
7)Spring Cloud Bus
消息总线 动态更新服务配置

六. SpringCloud和Dubbo区别

  1. 服务调用方式 dubbo是RPC springcloud Rest Api
  2. 注册中心,dubbo是zookeeper, springcloud是eureka,也可以是zookeeper
  3. 服务网关,dubbo本身没有实现,只能通过其他第三方技术整合,springcloud有Zuul路由网关

七. 微服务技术栈

  1. 维度(springcloud)
  2. 服务开发:springboot,spring,springmvc
  3. 服务配置与管理:Netfix公司的Archaiusm,阿里的Diamond
  4. 服务注册与发现:Eureka,Zookeeper
  5. 服务调用:Rest RPC gRpc
  6. 服务熔断器:Hystrix
  7. 服务负载均衡:Ribbon Nginx
  8. 服务接口调用:Fegin
  9. 消息队列:Kafka Rabbitmq activemq
  10. 服务配置中心管理:SpringCloudConfig
  11. 服务路由Api网关:Zuul
  12. 事件消息总线:SpringCloud Bus
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值