最后讲到SpringCloud,这个真是Spring家族的荣耀了,博主也只是浅尝辄止,也只是说点皮毛
SpringCloud
Spring Cloud顾名思义是跟云相关的,云程序实际上就是指分布式应用程序,所以Spring Cloud就是为了让分布式应用程序编写更方便,更容易而提供的一组基础设施,它的核心是Spring框架,利用Spring Boot的自动配置,力图实现最简化的分布式应用程序开发。
了解SpringCloud吗,说一下他和SpringBoot的区别
Spring Boot是用于构建单个Spring应用的框架,而Spring Cloud则是用于构建分布式系统中的微服务架构的工具,Spring Cloud提供了服务注册与发现、负载均衡、断路器、网关等功能。 两者可以结合使用,通过Spring Boot构建微服务应用,然后用Spring Cloud来实现微服务架构中的各种功能。
微服务全景图
什么是微服务?
微服务(或称微服务架构)是一种云原生架构方法,在单个应用中包含众多松散耦合且可单独部署的小型组件或服务。 这些服务通常:
虽然关于微服务的讨论大多围绕架构定义和特征展开,但通过相当简单的业务和组织优势,可以很容易地理解其价值:
-
代码更容易更新 - 可以直接添加新特性或功能,而不必更新整个应用
-
团队可以对不同的组件使用不同的技术栈和不同的编程语言。
-
组件可以相互独立地扩展,从而减少与必须扩展整个应用相关的浪费和成本(因为单个功能可能面临过多的负载)。
请回想一下您上次在线购物时的情景。您应该使用了网站上的搜索栏来浏览产品。这个搜索功能就是一项服务。也许您也看到了相关产品推荐,或在网上购物车里添加了一个商品。这两者也是服务。把所有这些微服务加到一起,您就得到了一个功能齐全的应用。
微服务不是什么
我们还可以通过比较两种上述应用架构(单体架构和面向服务的架构 (SOA))来理解微服务。
微服务与单体架构之间的区别在于,微服务通过许多松散耦合的小型服务组成单个应用,而单体方法则是一个紧密耦合的大型应用。
微服务与 SOA 之间的差异可能并不明显。 虽然微服务和 SOA 之间存在一些技术区别,尤其是企业服务总线 (ESB) 作用方面,但二者更明显的一个区别是范围。 SOA 是企业范围内的工作,旨在使组织中的所有 Web Service 相互之间的通信和集成标准化;而微服务架构则特定于应用。
微服务架构与云原生架构
微服务架构和云原生架构是现代软件开发中两个紧密相关且经常一起使用的概念,但它们关注的侧重点和应用的范围等有所不同。
-
云原生架构是一种基于云环境设计和构建应用程序的方法,它天然利用了云计算的优势,如弹性、可扩展性、自动化和敏捷性。Matt Stine 于2013年首次提出云原生(CloudNative)的概念,随着技术的不断演进,其定义也在不断地迭代和更新,云原生可以概括为四个要素:微服务、容器、DevOps 和持续交付。
云原生架构的主要目的是如何最大化地利用云平台的特性来实现高效的资源利用、快速迭代和自动化运维。
-
微服务架构的目的则是为了提高应用程序的模块化,使得开发、部署和扩展可以更加独立和灵活。
总结来看,微服务架构和云原生架构是相辅相成的。微服务架构可以被视为云原生架构的基石,为云原生应用提供了架构设计、分布式部署、敏捷开发等方案,以适应云计算平台的动态特性,为更高层次的云原生架构打下坚实的基础,而云原生技术则提供了实施微服务架构的最佳实践和平台支持。
微服务架构的演进
微服务架构主要是为了解决在应用软件架构时不断出现的业务挑战而产生的。
-
从最初传统的单体架构,它将应用程序作为一个整体部署和运行,可扩展性、容错性、可靠性等都有很大限制,而且单体架构的应用通常具有大量的代码和复杂的代码结构,导致维护成本极高。
-
随着业务架构的不断演进,后续有人提出拆分单体架构,解耦代码,形成一个个独立的功能单元,每个功能单元可以远程服务的方式提供(比如 Web 服务,通过80端口向用户提供网页访问服务),即面向服务架构(Service-oriented Architecture,简称 SOA)。虽然SOA能够解决单体架构的一些问题,但是也存在一些缺陷,比如服务相互依赖,性能差和部署运维复杂等问题。
-
后来越来越多的应用部署在云端,软件应用需要满足快速迭代、高并发访问、业务逻辑更加复杂等业务需求,微服务架构应运而生。
微服务架构按照业务功能划分服务,服务之间调用采用轻量级的通信框架,具备以下优势:
-
降低应用复杂度:当一个系统变得庞大且复杂时,微服务架构可以将系统拆分成多个小服务,每个服务专注于一个特定的业务领域,简化了应用的复杂性,提高了开发和维护的效率。比如应用在电子商务平台。
-
高并发处理:在需要处理大量并发请求的场景下,通过微服务架构,将系统拆分成多个独立的服务,每个服务独立扩展和部署,从而实现更好的并发处理能力。比如应用在社交媒体应用。
-
快速迭代和持续交付:微服务架构可以将系统拆分成多个小的服务,每个服务可以独立地进行开发、测试和部署。因此可以实现快速迭代和持续交付,不同的团队可以并行开发和部署各自的服务,允许每个服务使用适合自身需求的最佳技术栈,加快了软件发布的速度,提高了系统的灵活性和可扩展性。比如应用在游戏产业。
-
可伸缩性和弹性:微服务架构具有良好的可伸缩性,可以根据负载的变化,对系统中某些服务做水平扩展或收缩,可以更好地适应流量峰值和节省资源。比如应用在流媒体服务。