微服务(1)

目录

1.什么是微服务?谈谈你对微服务的理解?

2.什么是Spring Cloud?

3.Springcloud中的组件有哪些?

3.具体说说SpringCloud主要项目?

5.SpringCloud项目部署架构?


1.什么是微服务?谈谈你对微服务的理解?

    微服务

以前所有的代码都放在同一个工程中、部署在同一个服务器、同一项目的不同模块不同功能互相抢占资源,微服务就是将工程根据不同的业务拆分成微服务,部署在不同的服务器上,服务之间相互调用,Java中有的微服务有dubbo(只能用来做微服务),Springcloud(提供了 服务的发现,断路器等)。

  微服务的特点

1.按业务划分为一个独立运行的程序,即服务单元

2.服务之间通过HTTP协议相互通信

3.自动化部署

4.可以用不同的编程语言

5.可以用不同的存储技术

6.服务集中化管理

7.微服务是一个分布式系统

微服务的优势

1.将一个复杂的业务拆分成若干小的业务,将复杂的业务简单化,新人只需要了解他所接管的服务代码,减少新人的学习成本。

2.由于微服务是分布式服务,服务于服务之间没有任何耦合。微服务系统的微服务单元具有很强的横向扩展能力。

3.服务与服务之间采用HTTP网络通信协议来通信,单个服务内部高度耦合,服务与服务之间完全独立,无耦合。这使得微服务可以采用任何开发语言和技术来实现,提高开发效率,降低开发成本。

4.微服务是按照业务进行拆分的,并有坚实的服务边界,若要重写某一业务代码,不需了解所有业务,重写简单。

5.微服务的每个服务单元是独立部署的,即独立运行在某个进程中,微服务的修改和部署对其他服务没有影响。

6.微服务在CAP理论中采用的AP架构,具有高可用分区容错特点。高可用主要体现在系统7*24不间断服务,他要求系统有大量的服务器集群,从而提高系统的负载能力。分区容错也使得系统更加健壮。

微服务的不足

1.微服务的复杂度:构建一个微服务比较复杂,服务与服务之间通过HTTP协议或者其他消息传递机制通信,开发者要选出最佳的通信机制,并解决网络服务差时带来的风险。

2.分布式事务:将事务分成多阶段提交,如果一阶段某个节点失败仍会导致数据不正确。如果事务涉及的节点很多,某一节点的网络出现异常会导致整个事务处于阻塞状态,大大降低数据库的性能。

3.服务划分:将一个完整的系统拆分成很多个服务,是一件非常困难的事,因为这涉及了具体的业务场景。

4.服务部署:最佳部署容器Docker。

微服务和SOA的关系

微服务相对于和ESB联系在一起的SOA轻便敏捷的多,微服务将复杂的业务组件化,也是一种面向服务思想的体现。对于微服务来说,他是SOA的一种体现,但是他比ESB实现的SOA更加轻便,敏捷和简单。

2.什么是Spring Cloud?

 Spring  Cloud是一系列框架的有序集合。他利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册,配置中心,智能路由,消息总线,均衡负载,断路器,数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

Spring Cloud并没有重复制造轮子,他只是将各家公司开发的比较成熟,经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终个开发者留出了一套简单易懂,易部署和易维护的分布式系统开发工具包。

SpringCloud的优点

1.耦合度比较低。不会影响其他模块的开发。

2.减轻团队的成本,可以并行开发,不用关注其他人怎么开发,先关注自己的开发。

3.配置比较简单,基本用注解就能实现,不用使用过多的配置文件。

4.微服务跨平台的,可以用任何一种语言开发。

5.每个微服务可以有自己的独立的数据库也有用公共的数据库。

6.直接写后端的代码,不用关注前端怎么开发,直接写自己的后端代码即可,然后暴露接口,通过组件进行服务通信。

SpringCloud的缺点

1.部署比较麻烦,给运维工程师带来一定的麻烦。

2.针对数据的管理比较麻烦,因为微服务可以每个微服务使用一个数据库。

3.系统集成测试比较麻烦。

4.性能的监控比较麻烦。

3.Springcloud中的组件有哪些?

1.Spring Cloud Eureka,服务注册中心,特性有失效剔除,服务保护。

2.Spring Cloud Zuul,API服务网管,功能有路由分发和过滤。

3.Spring  Cloud  Config,分布式配置中心,支持本地仓库,SVN,Git,Jar包配置等模式。

4.Spring Cloud Ribbon,客户端负载均衡,特性有区域亲和,重试机制

5.Spring  Cloud  Hystrix,客户端容错保护,特性有服务降级,服务熔断,请求缓存,请求合并,依赖隔离。

6.Spring Cloud Feign,声明式服务调用本质上就是Ribbon+Hystrix.

7.Spring  Cloud Stream,消息驱动,有Sink,Source,Processor三种通道,特性有订阅发布,消息组,消息分区。

8.Spring Cloud Bus,消息总线,配合Config仓库修改一种Stream实现。

9.Spring  Cloud Sleuth,分布式服务追踪器,需要搞清楚TraceID和SpanID以及抽样,如何与ELK整合。

3.具体说说SpringCloud主要项目?

 SpringCloud的子项目,大致分成两类,一类是对现有成熟框架”SpringBoot化:的封装和抽象,也是数量最多的项目,第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是Kafka,ActiveMQ这样的角色。

Spring Cloud Config  Config能够管理所有微服务的配置文件

集中配置管理工具,分布式系统中统一的外部配置管理,默认使用Git来存储配置。可以支持客户端配置的刷新以及加密,解密操作。

Spring  Cloud Netflix

Netflix  OSS 开源组件集成,包括Eureka,Hystrix,Ribbon,Feign,Zuul等核心组件。

1.Eureka:服务治理组件,包括服务端的注册中心和客户端的服务发现机制;

2.Ribbon:负责均衡的服务调用组件,具有多种负载均衡调用策略。

3.Hystrix:服务容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错能力。

4.Feign:基于Ribbon和Hystrix的声明式服务调用组件。

‘5.Zuul:API网关组件,对请求提供路由以及过滤功能。

Spring Cloud Bus

1.用于传播集群状态变化的消息总线,使用轻量级消息代理链接分布式系统中的节点,可以用动态刷新集群中的服务配置信息。

2.简单来说就是修改了配置文件,发送一次请求,所有客户端便会重新读取配置文件(需要利用中间插件MQ)。

Spring   Cloud  Consul

Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul的方案更“一站式”,内置了服务注册与发现框架,分布一致性协议实现,健康检查,Key/Value存储,多数据中心方案,不再需要依赖其他工具(比如Zookeeper等)。使用起来比较简单。Consul使用Go语言编写,因此具有天然可移植性(支持Linux,Windows和Mac OS  X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合。

Spring  Cloud  Security

Spring  Cloud  Security提供了一组原语,用于构建安全的应用程序和服务,而且操作简便。可以在外部(或集中)进行大量配置的声明性模型有助于实现大型协作的远程组件系统,通常具有中央身份管理服务。他也非常易于在Cloud  Foundry等服务平台中使用。在SpringBoot和Spring Security  OAuth2的基础上,可以快速创建实现常见模式的系统,如单点登录,令牌中继和令牌交换。

Spring  Cloud Sleuth

在微服务中,通常根据业务分模块,项目中前端发起一个请求,后端可能跨几个服务调用才能完成这个请求(如下图)。如果系统越来越庞大,服务之间的调用与被调用关系就会变得复杂,假如一个请求中需要跨几个服务调用,其中一个服务由于网络延迟等原因挂掉了,那么这时候我们需要分析具体哪一个服务出现问题了就会显得困难。Spring Cloud Sleuth服务链路跟踪功能就可以帮助我们快速的发现错误根源以及监控分析每条请求链路上的性能等等。

Spring   Cloud  Stream 

轻量级事件驱动微服务框架,可以使用简单的声明式模型来发送以及接收消息,主要实现为Apache  Kafka以及RabbitMQ。

Spring  Cloud  Task

Spring Cloud Task的目标是为Spring  Boot应用程序提供创建短运行期微服务的功能。在Spring  Cloud Task中,我们可以灵活的动态运行任何任务,按需分配资源并在任务完成后检索结果。Tasks是Spring Cloud Data  Flow中的一个基础项目,允许用户将几乎任何Spring  Boot应用程序作为一个短期任务执行。

Spring  Cloud  Zookeeper

Spring   Cloud 支持三种注册方式Eureka,Consul(go语言编写),zookeeper  Spring  Cloud  Zookeeper是基于Apache  Zookeeper的服务治理组件。

Spring  Cloud GateWay

 Spring  Cloud  Gateway是Spring官方基于Spring 5.0,SpringBoot2.0和Project  Reactor等技术开发的网关,Spring  Cloud GateWay旨在为微服务架构提供简单,有效和统一的API路由管理方式,Spring Cloud GateWay作为Spring Cloud生态系统中的网关,目标是替代Neflix  Zuul,其不仅提供统一的路由方式,而且还基于Filer链的方式提供网关基本的功能,例如:安全,监控/埋点,限流等。

Spring  Cloud OpenFeign

Feign是一个声明性的Web服务客户端。他使编写Web服务客户端变得更容易。要使用Feign,我们可以将调用的服务方法定义成抽象方法保存在本地添加一点点注解就可以了,不需要自己构建http请求了,直接调用接口就行了,不过要注意,调用方法要和本地抽象方法的签名完全一致。

5.SpringCloud项目部署架构?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/228760.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端开发新趋势:Web3、区块链与虚拟现实

文章目录 Web3:下一代互联网区块链技术去中心化应用程序(DApps) 区块链:重塑数字世界数字钱包NFT(非同质化代币) 虚拟现实:沉浸式体验WebVR和WebXR三维图形 新挑战与机会性能与复杂性安全性创新…

【网络面试(2)】DNS原理-域名和IP地址的查询转换

从上一篇博客我们得知浏览器是如何生成了HTTP消息了,但是浏览器作为应用程序,是不具备向网络中发送请求的能力,而是需要委托给操作系统的内核协议栈来发送请求。在委托协议栈之前,浏览器还要做的一件事情就是将域名转换为IP地址。…

lambda表达式和包装器

正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 我们在使用库里的排序算法时如果排序的是自定义类型或者库里默认的排序不能满足我们则需求&…

Apache DolphinScheduler 3.1.9 版本发布:提升系统的稳定性和性能

🚀我们很高兴宣布,Apache DolphinScheduler 的最新版本 3.1.9 已正式发布!此版本在 3.1.8 的基础上进行了关键的 bug 修复和文档更新,共计修复了 14 个 bug 和改进了 3 个文档。 主要更新亮点 本次更新重点解决了以下几个关键问题…

磁盘阵列raid

一、服务器硬件 cpu 、 主板 、内存、硬盘、网卡、电源、raid卡、风扇、远程管理卡 二、硬盘尺寸 目前生产环境中主流的两种类型硬盘 3.5寸 和 2.5寸 硬盘 2.5寸硬盘可以通过使用硬盘托架后适用于3.5寸硬盘的服务器,但是3.5寸没法转换成2.5寸 三、服务器常见故…

[每周一更]-(第43期):Golang版本的升级历程

从1.13接触go语言开始更新我们公司内第一个Go项目,直至现在go版本已经发展到1.20(20230428),我们从go发版开始认识go语言,有利于我们更深入 了解这门语言,洞悉一些深层方式,加深我们学习的动力&…

看懂基本的电路原理图(入门)

文章目录 前言一、二极管二、电容三、接地一般符号四、晶体振荡器五、各种符号的含义六、查看原理图的顺序总结 前言 电子入门,怎么看原理图,各个图标都代表什么含义,今天好好来汇总一下。 就比如这个电路原理图来说,各个符号都…

JDBC->SpringJDBC->Mybatis封装JDBC

一、JDBC介绍 Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们…

03 团队研究进一步详细介绍

一、印第安纳大学邢璐祎课题组 【团队网站】 https://www.xing-luyi.com/ 【团队介绍】 研究以形式化方法为特色,并保证系统中的安全性和隐私合规性,特别是物联网、云、移动和软件供应链。 【团队成果汇总】 物联网系统:[Oakland24][Se…

合伙企业法关于合伙企业的要求

合伙协议可以载明合伙企业的经营期限和合伙人争议的解决方式。 合伙协议经全体合伙人签名、盖章后生效。合伙人依照合伙协议享有权利,承担责任。 经全体合伙人协商一致,可以修改或者补充合伙协议。 申请合伙企业设立登记,应当向企业登记机关提…

TecoGAN视频超分辨率算法

1. 摘要 对抗训练在单图像超分辨率任务中非常成功,因为它可以获得逼真、高度细致的输出结果。因此,当前最优的视频超分辨率方法仍然支持较简单的范数(如 L2)作为对抗损失函数。直接向量范数作损失函数求平均的本质可以轻松带来时…

Linux自定义shell编写

Linux自定义shell编写 一.最终版本展示1.动图展示2.代码展示 二.具体步骤1.打印提示符2.解析命令行3.分析是否是内建命令1.shell对于内建名令的处理2.cd命令3.cd函数的实现4.echo命令的实现5.export命令的实现6.内建命令函数的实现 4.创建子进程通过程序替换执行命令5.循环往复…

微软开源,全平台通用:Shell 自动补全工具 | 开源日报 No.132

microsoft/inshellisense Stars: 7.6k License: MIT inshellisense 是一个为 Shell 提供 IDE 风格自动补全的工具。它是一个终端本地运行时自动完成,支持 600 多个命令行工具,并且可以在 Windows、Linux 和 macOS 上使用。主要功能包括安装后可通过运行…

30 UVM Adder Testbench Example

1 Adder Design 加法器设计在时钟的上升沿产生两个变量的加法。复位信号用于clear out信号。注:加法器可以很容易地用组合逻辑开发。引入时钟和重置,使其具有测试台代码中时钟和重置的样子/风格。 module adder(input clk, reset, input [7:0] in1, in…

【操作系统】处理机调度

文章目录 一. 实验目的二. 实验内容三. 实验步骤四. 实验结果五. 实验总结附:系列文章 一. 实验目的 (1)加深对进程概念的理解,明确进程和程序的区别 (2)深入理解系统如何组织进程 (3&#xff…

Frappe Charts:数据可视化的强大工具

一、产品简介: 一个简单、零依赖、响应式的 开源SVG 图表库。这个图表库无论是数据更新还是屏幕大小变化,都能快速响应并更新图表。数据生成和悬停查看都有舒服的交互动效,体验感很好。不仅支持配置颜色,外观定制也很方便。还支持…

最新ChatGPT网站AI系统源码,附详细搭建教程/支持GPT4.0/AI绘画/GPT语言对话/DALL-E3文生图/自定义知识库

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

Google Chrome 现在会在后台扫描泄露的密码

谷歌表示,Chrome 安全检查功能将在后台运行,检查网络浏览器中保存的密码是否已被泄露。 如果桌面用户正在使用标记为危险的扩展程序(从 Chrome Web Store 中删除)、最新的 Chrome 版本,或者如果启用安全浏览来阻止 Go…

修改jenkins的目录(JENKINS_HOME)

默认JENKINS_HOME是/var/lib/jenkins/ 现要修改为/home/jenkins_data/jenkins 最开始 sudo cp -a /var/lib/jenkins/ /home/jenkins_data/ 然后如下操作: 1、首先 /etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKIN…

message: 没有找到可以构建的 NPM 包,请确认需要参与构建的 npm 都在 `miniprogra

第一步:修改 project.config.json 文件 "packNpmRelationList": [{"packageJsonPath": "./package.json","miniprogramNpmDistDir": "./miniprogram/"}], "packNpmManually": true 第二步:…