spring cloud架构

https://www.cnblogs.com/xuzhaoyang/p/11010859.html

我们首先来说一下spring cloud的诞生的背景和意义

1 背景

2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了,像抢红包、双十一这样的活动不断逼迫我们去突破软件系统的性能上限,传统的IT企业”能用就行”的开发思想已经不能满足互联网高并发、大流量的性能要求。系统架构走向分布式已经是服务器开发领域解决该问题唯一的出路,然而分布式系统由于天生的复杂度,并不像开发单体应用一样把框架一堆就能搞定,因此各大互联网公司都在投入技术力量研发自己的基础设施。这里面比较有名的如阿里的开源项目dubbo, Netflix开发的一系列服务框架。在这种“百花齐放”、重复造轮子的状况下,必然要出现一种统一的标准来简化分布式系统的开发,Spring Cloud应运而生。

2 Spring Cloud是什么

SpringCloud架构

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
Spring Cloud正是对Netflix的多个开源组件进一步的封装而成,同时又实现了和云端平台,和Spring Boot开发框架很好的集成。
Spring Cloud是一个相对比较新的微服务框架,2016年才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案
Spring Cloud 为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全居琐,leader选举,分布式session,集群状态)中快速构建的工具,使用Spring Cloud的开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。

下面来说一下spring cloud的组成以及

Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色。对于我们想快速实践微服务的开发者来说,第一类子项目就已经足够使用,如:Spring Cloud Netflix,是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。该项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。
通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。

netflix-eureka的组成

Spring Cloud作为第二代微服务的代表性框架,已经在国内众多大中小型的公司有实际应用案例。许多公司的业务线全部拥抱Spring Cloud,部分公司选择部分拥抱Spring Cloud。例如,拍拍贷资深架构师杨波老师就根据自己的实际经验以及对Spring Cloud的深入调研,并结合国内一线互联网大厂的开源项目应用实践结果,认为Spring Cloud技术栈中的有些组件离生产级开发尚有一定距离,最后提出了一个可供中小团队参考的微服务架构技术栈,又被称为“中国特色的微服务架构技术栈1.0”:

下面来说一下spring cloud 的核心组件:

  • Spring Cloud Netflix:核心组件,可以对多个Netflix OSS开源套件进行整合,包括以下几个组件:

    • Eureka:服务治理组件,包含服务注册与发现
    • Hystrix:容错管理组件,实现了熔断器
    • Ribbon:客户端负载均衡的服务调用组件
    • Feign:基于Ribbon和Hystrix的声明式服务调用组件
    • Zuul:网关组件,提供智能路由、访问过滤等功能
    • Archaius:外部化配置组件
  • Spring Cloud Config:配置管理工具,实现应用配置的外部化存储,支持客户端配置信息刷新、加密/解密配置内容等。
  • Spring Cloud Bus:事件、消息总线,用于传播集群中的状态变化或事件,以及触发后续的处理
  • Spring Cloud Security:基于spring security的安全工具包,为我们的应用程序添加安全控制
  • Spring Cloud Consul : 封装了Consul操作,Consul是一个服务发现与配置工具(与Eureka作用类似),与Docker容器可以无缝集成

引用:https://www.cnblogs.com/edisonchou/p/java_spring_cloud_foundation_sample_list.html

https://www.cnblogs.com/wxd0108/p/8949775.html

最新文章

  1. Spring MVC+Spring +Hibernate配置事务,但是事务不起作用
  2. 写出几种IE6 BUG的解决方法
  3. 【NGUI】grid下面的item的重复利用
  4. AcmeAir
  5. jquery mobile touch 实例
  6. 几个检查当前运行的LINUX是在VM还是在实体机中的方法
  7. Dreamwaver 使用root用户连接不上远程服务器
  8. php基础知识总结
  9. xamarin之 安装工具介绍
  10. php的set_time_limit()函数
  11. salesforce初探
  12. mysql语法之case when then与列转行
  13. Day11 Python基础之装饰器(高级函数)(九)
  14. Gogs 部署安装(windows)
  15. string和int的相互转换方法
  16. 使用/\_ 打印正三角形 C/C++
  17. Python学习杂记
  18. maven -- 问题解决(四)警告Classpath entry org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER will not be exported or published
  19. web安全测试系统
  20. 10篇写给Git初学者的最佳教程(转)

热门文章

  1. [RN] React Native 仿美团下拉筛选菜单控件
  2. ACM数据结构-线段树
  3. A~G)C004
  4. GitHub 手把手教你如何把本地项目或代码提交到Github托管
  5. pandas把'<m8[ns]'类型转换为int类型进行运算
  6. 【CSP膜你赛】柠檬的密码(manacher 二分 单调性 st表)
  7. 面试官问线程安全的List,看完再也不怕了!
  8. Python中如何计算字符串里面某一个字符出现的次数?
  9. Spark2.x(六十二):(Spark2.4)共享变量 - Broadcast原理分析
  10. PHP系列 | 代码复用trait的构造函数使用