一、微服务和SpringCloud简介

news/2024/11/23 12:55:58/

1.微服务简介

微服务(不是一个框架 而是一种架构思想),是著名的 oo (面向对象, ObjectOriented )专家 Martin Fowler 提出来的,它是用来描述将软件应用程序设计为独立部署的服务的一种特殊方式。

最近两年,微服务在各大技术会议、文章、书籍上出现的频率已经让人意识到它对于软件领域所带来的影响力。微服务架构的系统是个分布式系统按业务领域划分为独立的服务单元,有自动化运维、容错、快速演进的特点,它能够解决传统单体架构系统的痛点,同时也能满足越来越复杂的业务需求。

1.2 到底什么是微服务

就是将一个大的应用,拆分成多个小的模块,每个模块都有自己的功能和职责,每个模块可以进行交互,这就是微服务

对于微服务,业界没有严格统一的定义,但是作为“微服务”这名词的发明人,Martin Fowler对微服务的定义似乎更具有权威性和指导意义,他的理解如下:

简而言之,微服务架构的风格,就是将单一程序开发成一个微服务,每个微服务运行在自己的进程中,并使用轻量级通信机制,通常是HTTP RESTFUL API。这些服务围绕业务能力来划分构建的,并通过完全自动化部署机制来独立部署这些服务可以使用不同的编程语言,以及不同数据存储技术,以保证最低限度的集中式管理。

1.2.1 总结出微服务的特点

  1. 按业务(功能)划分为一个独立运行的程序,即服务单元。
  2. 服务之间通过 HTTP 协议相互通信。 http 是一个万能的协议 (web 应用都支持的模式)
  3. 自动化部署。
  4. 可以用不同的编程语言。
  5. 可以用不同的存储技术。
  6. 服务集中化管理。
  7. 微服务是一个分布式系统。

1.5 微服务的不足(正视它的不足)

凡事都有两面性,微服务也不例外,微服务相对于单体应用来说具有很多的优势,当然也有它
的不足,主要体现在如下方面:

  1. 微服务的复杂度

  2. 分布式事务问题

  3. 服务的划分(按照功能划分 还是按照组件来划分呢) 分工

  4. 服务的部署(不用自动化部署 自动化部署)

1.6 微服务架构的设计原则(项目起步搭建)

开闭原则 单一原则 6 大设计原则 架构设计和代码设计思路一样的 设计原则

2.SpringCloud 简介(管家 注重服务的管理)

Spring Cloud 作为 Java 语言的微服务框架,它依赖于 Spring Boot,有快速开发、持续交付和容易部署等特点。 Spring Cloud 的组件非常多,涉及微服务的方方面面,井在开源社区 Spring 和 Netflix、 Pivotal 两大公司的推动下越来越完善,如今 alibaba 也加入到其中。 spring 官方 netflix alibaba Spring Cloud 在开发部署上继承了 Spring Boot 的一些优点,提高其在开发和部署上的效率。

Spring Cloud 的首要目标就是通过提供一系列开发组件和框架,帮助开发者迅速搭建一个分布式的微服务系统。
Spring Cloud 是通过包装其他技术框架来实现的,例如包装开源的 Netflix oss 组件,实现了一套通过基于注解、 Java 配置和基于模版开发的微服务框架。 Spring Cloud 提供了开发分布式微服务系统的一些常用组件,例如服务注册和发现、配置中心、熔断器、远程调用,智能路由、微代理、控制总线、全局锁、分布式会话等。

2.1 SpringCloud 版本对应关系【开发重点】

	A B C D E **F G H** I(2020 版)   			 Hoxton.SR12     2.3.12.RELEASE

https://start.spring.io/actuator/info

2.2 SpringCloud 常用组件表 (管家)

服务的注册和发现。(eureka,nacos,consul)
服务的负载均衡。(ribbon,dubbo)
服务的相互调用。(openFeign,dubbo)
服务的容错。(hystrix,sentinel)
服务网关。(gateway,zuul)
服务配置的统一管理。(config-server,nacos,apollo)
服务消息总线。(bus)
服务安全组件。(security,Oauth2.0)
服务监控。(admin) (jvm)
链路追踪。(sleuth+zipkin)

2.3 总结

SpringCloud 就是微服务理念的一种具体落地实现方式,帮助微服务架构提供了必备的功能
目前开发中常用的落地实现有三种:
Dubbo+Zookeeper 半自动化的微服务实现架构 (别的管理没有)
SpringCloud Netflix 一站式微服务架构
SpringCloud Alibaba 新的一站式微服务架构
三大公司
Spring Netflix Alibaba


http://www.ppmy.cn/news/671291.html

相关文章

手机GPU是什么

我们听说过电脑GPU,常常用于玩游戏,处理图形软件等,获得更加好的性能,但是我们很少听说手机GPU,我们在买手机的时候有没有关注过GPU这个概念呢?还是我们在购买手机的时候只考虑到性价比,尺寸&am…

Adreno GPU详细介绍

Adreno GPU详细介绍 Adreno GPU是美国Qualcomm为移动平台设计的集成GPU。支持最先进的移动API,同时具有优异的性,应用于对带宽、功耗、散热等方面都有限制的移动芯片。Adreno GPU支持任意复杂的API,比如OpenGL ES(2.0、3.0、3.1等)、OpenCL、…

SSM网上商城

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 SSM网上商城,java项目。 eclipse和idea都能打开运行。 推…

Java 的拷贝(深拷贝、浅拷贝)

在对象的拷贝中,很多初学者可能搞不清到底是拷贝了引用还是拷贝了对象。在拷贝中这里就分为引用拷贝、浅拷贝、深拷贝进行讲述。 引用拷贝 引用拷贝会生成一个新的对象引用地址,但是两个最终指向依然是同一个对象。如何更好的理解引用拷贝呢&#xff1…

php获取判断图片大小,php获取图片详细信息(宽 高 格式 大小)

function getImageInfo($img) //$img为图像文件绝对路径 { $img_info getimagesize($img); switch ($img_info[2]) { case 1: $imgtype "GIF"; break; case 2: $imgtype "JPG"; break; case 3: $imgtype "PNG"; break; } $img_type $imgtyp…

npy文件的读出与修改

npy 文件用于存储重建ndarray 所需的数据、图形、dtype 和其他信息。 常用的IO 函数有: load() 和save() 函数是读写文件数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为. npy 的文件中。 1.首先自己写一个.npy文件,使用np.save(‘test.…

华为鸿蒙与海尔,国产家电巨头力挺华为,强强联合,为鸿蒙系统开疆拓土

鸿蒙依托美的电器,直接进入国际市场 在众多意想不到的收获当中,最让华为期许便是国际市场。国内市场有人支持鸿蒙,但国外市场被苹果和安卓占有,没有一系列卓越的品牌去刺激,是很难找到自己立足的市场。 美的国际形象良…

海外净利润低?海尔智家H股上市有望看齐国内!

文/易牟 来源/螳螂财经(ID:TanglangFin) 12月20日,海尔智家发布了一则新公告,关于对海尔电器私有化议案将于12月21日(百慕大时间)生效。海尔智家也预期于12月23日上午9点在香港联交所挂牌上市&#xff0c…