当前位置: 首页 > news >正文

微服务(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项目部署架构?

相关文章:

微服务(1)

目录 1.什么是微服务?谈谈你对微服务的理解? 2.什么是Spring Cloud? 3.Springcloud中的组件有哪些? 3.具体说说SpringCloud主要项目? 5.SpringCloud项目部署架构? 1.什么是微服务?谈谈你对微…...

195.【2023年华为OD机试真题(C卷)】5G 网络建设(最小生成树—JavaPythonC++JS实现)

请到本专栏顶置查阅最新的华为OD机试宝典 点击跳转到本专栏-算法之翼:华为OD机试 🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,深度掌握! 文章目录 【2023年华为OD机试真题(C卷)】5G 网络建设(最小生…...

2024年1月1日答案

a)i. V B B V C C 16 V V_{BB} V_{CC} 16V VBB​VCC​16V R t h R B R E R B R E 10 k Ω 3 k Ω 10 k Ω 3 k Ω ≈ 2.31 k Ω R_{th} \frac{R_B \times R_E}{R_B R_E} \frac{10k\Omega \times 3k\Omega}{10k\Omega 3k\Omega} \approx 2.31k\Omega Rth​RB​R…...

【算法】dp题单

题单链接: https://vjudge.net/contest/574209#overview 目录 1. 洛谷 P1020 导弹拦截 (dp二分Dilworth 定理) 2. P1439 最长公共子序列(二分求最长公共子序列) 3. 洛谷 P1854 花店橱窗布置 (线性dp 用…...

Verilog视频信号图形显示 FPGA(iCE40)

您需要一块带视频输出的 FPGA 板。 我们将在 640x480 下工作,几乎任何视频输出都可以在此像素工作。 它有助于轻松地对 FPGA 板进行编程并相当熟悉 Verilog。 如果您没有开发板,请不要担心,您可以使用 Verilator 模拟器。 材料 Lattice iCE…...

【LeetCode 面试经典150题】26. Remove Duplicates from Sorted Array 在有序数组中移除重复元素

26. Remove Duplicates from Sorted Array 题目大意 Given an integer array nums sorted in non-decreasing order, remove the duplicates in-place such that each unique element appears only once. The relative order of the elements should be kept the same. Then …...

linux系统下sql脚本的执行与导出

terminal中执行 执行 mysql -u [username] -p -D [databasename] < [XXX.sql] 导出 mysql -u [username] -p [datbasename] > [XXX.sql] 导出的数据库名自定义。 mysql -u [username] -p [databasename] [tablename] > [xxx.sql] 导出表名自定义 mysql shell 执行 …...

MyBatis学习一:快速入门

前言 公司要求没办法&#xff0c;前端也要了解一下后端知识&#xff0c;这里记录一下自己的学习 学习教程&#xff1a;黑马mybatis教程全套视频教程&#xff0c;2天Mybatis框架从入门到精通 文档&#xff1a; https://mybatis.net.cn/index.html MyBatis 快速入门&#xf…...

零售业物流这个防漏水技术,居然没有翻车!

随着科技的不断发展&#xff0c;水浸监控系统在各个领域得到了广泛应用。水浸监控不仅仅是为了保护建筑结构和设备&#xff0c;更是为了防范因水灾引起的生命安全和财产损失。 因此&#xff0c;为了有效预防和应对水浸事件&#xff0c;水浸监控系统应运而生&#xff0c;成为各行…...

主浏览器优化之路1——你现在在用的是什么浏览器?Edge?谷歌?火狐?360!?

上一世&#xff0c;我的浏览器之路 引言为什么要用两个浏览器为什么一定要放弃火狐结尾给大家一个猜数字小游戏&#xff08;测运气&#xff09; 引言 小时候&#xff0c;我一开始上网的浏览器是2345王牌浏览器吧&#xff0c; 因为上面集成了很多网站&#xff0c;我记得上面有7…...

gitlab请求合并分支

直接去看原文: 原文链接:Gitlab合并请求相关流程_source branch target branch-CSDN博客 --------------------------------------------------------------------------------------------------------------------------------- 入口&#xff1a; 仓库控制台的这两个地方都…...

使用Vue3开发学生管理系统模板1

环境搭建 通过解压之前《Vue3开发后台管理系统模板》的代码&#xff0c;我们能够得到用户增删改查的页面&#xff0c;我们基于用户增删改查的页面做进一步的优化。 创建学生增删改查页面 第一步&#xff1a;复制用户增删改查页面&#xff0c;重命名为StudentCRUD.vue <…...

【cmake实战:番外】交叉编译——Linaro

【cmake实战&#xff1a;番外】交叉编译——Linaro 一、交叉编译1、交叉编译简介2、为什么会有交叉编译 二、交叉编译链1、什么是交叉编译链2、交叉编译工具 三、Linaro1、下载2、解压3、demo3.1、toolchain_aarch64.cmake3.2、CMakeLists.txt3.3、main.cpp 4、执行编译5、查看…...

2024年年初Java5年实战面试题(北京)

高阶篇&#xff1a; 一、在面对千万条并发请求的情况下&#xff0c;如果数据库频繁查询导致崩溃&#xff0c;可以采取以下措施来解决问题: 1.缓存数据:可以使用缓存技术来减少对数据库的查询次数。将经常查询的数据存储在缓存中&#xff0c;例如使用Redis等内存数据库&#xff…...

【Apache-2.0】springboot-openai-chatgpt超级AI大脑产品架构图

springboot-openai-chatgpt: 一个基于SpringCloud的Chatgpt机器人&#xff0c;已对接GPT-3.5、GPT-4.0、百度文心一言、stable diffusion AI绘图、Midjourney绘图。用户可以在界面上与聊天机器人进行对话&#xff0c;聊天机器人会根据用户的输入自动生成回复。同时也支持画图&a…...

如何在iPhone设备中查看崩溃日志

​ 目录 如何在iPhone设备中查看崩溃日志 摘要 引言 导致iPhone设备崩溃的主要原因是什么&#xff1f; 使用克魔助手查看iPhone设备中的崩溃日志 奔溃日志分析 总结 摘要 本文介绍了如何在iPhone设备中查看崩溃日志&#xff0c;以便调查崩溃的原因。我们将展示三种不同的…...

对接第三方接口鉴权(Spring Boot+Aop+注解实现Api接口签名验证)

前言 一个web系统&#xff0c;从接口的使用范围也可以分为对内和对外两种&#xff0c;对内的接口主要限于一些我们内部系统的调用&#xff0c;多是通过内网进行调用&#xff0c;往往不用考虑太复杂的鉴权操作。但是&#xff0c;对于对外的接口&#xff0c;我们就不得不重视这个…...

微服务-理论(CAP,一致性协议)

CAP理论 关于CAP理论的介绍可以直接看这篇文章 CAP分别是什么&#xff1f; 一致性&#xff08;Consistency 一致性包括强一致性&#xff0c;弱一致性&#xff0c;最终一致性。 一致性其实是指数据的一致性&#xff0c;为什么数据会不一致呢&#xff1f; 如上面这张图&…...

CTFshow web入门web128-php特性31

开启环境: 一个新的姿势&#xff0c;当php扩展目录下有php_gettext.dll时&#xff1a; _()是一个函数。 _()gettext() 是gettext()的拓展函数&#xff0c;开启text扩展get_defined_vars — 返回由所有已定义变量所组成的数组。 call_user_func — 把第一个参数作为回调函数调…...

再见2023,你好2024(附新年烟花python实现)

亲爱的朋友们&#xff1a; 写点什么呢&#xff0c;我已经停更两个月了。2023年快结束了&#xff0c;时间真的过得好快&#xff0c;总要写点什么留下纪念吧。这一年伴随着许多挑战和机会&#xff0c;给了我无数的成长和体验。坦白说&#xff0c;有时候我觉得自己好像是在时间的…...

Redis 的常用命令

一、Redis 通用命令 TYPE key&#xff1a;返回 key 所储存的值的类型。 OBJECT ENCODING key&#xff1a;返回key所储存的值的底层编码方式。 DEL key&#xff1a;该命令用于在 key 存在时删除 key。 EXPIRE key seconds&#xff1a;设置指定key的过期时间。 RENAME key newke…...

【模拟电路】模拟集成电路之神-NE555

一、集成电路NE555简介 二、功能框图与引脚说明 三、比较器&#xff08;运放&#xff09; 四、反相门&#xff08;非门&#xff09; 五、或非门 六、双稳态触发器 七、NE555的工作原理 集成电路NE555的芯片手册 C5157696 一、集成电路NE555简介 NE555起源于上个世纪70年代&a…...

收集最新的 Sci-Hub 网址(本文章持续更新2024)

自用收集最新的 Sci-Hub 网址 本文章持续更新收集 Sci-Hub 的可用网址链接仅供交流学习使用&#xff0c;如对您有所帮助&#xff0c;请收藏并推荐给需要的朋友&#xff0c;由于网站限制&#xff0c;不一定所有网址都能在您所在的位置访问&#xff0c;通常情况下&#xff0c;一…...

针对NPC客户端的升级(脚本执行)

上一次我们使用NPS自动注册的方式&#xff0c;在被控端上实现了自动创建NPC客户端链接。 Linux主机自动注册NPS客户端&#xff08;脚本化&#xff09; 但是在使用过程中我发现存在很多的问题&#xff0c;如果被控端重启客户端或者出现了多个NPS时会造成冲突&#xff0c;所以考虑…...

[每周一更]-(第51期):Go的调度器GMP

参考文献 https://learnku.com/articles/41728http://go.cyub.vip/gmp/gmp-model.html#g-m-phttps://blog.csdn.net/ByteDanceTech/article/details/129292683https://www.ququ123.top/2022/04/golang_gmp_principle/ 什么是GMP? GMP模型是Go语言并发模型的核心概念&#x…...

阿里云和腾讯云服务器系统盘40G或50G空间够用吗?

云服务器系统盘40G或50G空间够用吗&#xff1f;够用&#xff0c;操作系统一般占用几个GB的存储空间&#xff0c;尤其是Linux操作系统占用空间容量更小&#xff0c;阿里云和腾讯云服务器系统盘默认提供的40GB高效云盘或50G通用型SSD云硬盘&#xff0c;阿腾云atengyun.com分享是否…...

网络层协议 ——— IP协议

文章目录 IP协议基本概念IP协议格式分片与组装网段划分特殊的IP地址IP地址的数量限制私网IP地址和公网IP地址路由路由表生成算法 IP协议 IP协议全称为“网际互连协议&#xff08;Internet Protocol&#xff09;”&#xff0c;IP协议是TCP/IP体系中的网络层协议。 基本概念 网…...

MATLAB --- interp1( )函数的用法

interp1() 是 MATLAB 中用于一维插值的函数&#xff0c; 它可以根据给定的数据点进行插值&#xff0c;从而在给定的插值点处估计函数的值 下面是 interp1() 函数的用法&#xff1a; Vq interp1(X, V, Xq) Vq interp1(X, V, Xq, method) Vq interp1(X, V, Xq, method, extr…...

【react-taro-canvas】用canvas手写一个数字、字母混合的行为验证码

用canvas手写一个数字、字母混合的行为验证码 实现效果源码 实现效果 源码 import Taro from "tarojs/taro"; import { View, Canvas, Input, Button } from "tarojs/components"; import { useState, useEffect } from "react"; // 画随机线函…...

ctfshow——信息搜集

文章目录 web 1web 2web 3web 4web 5web 6web 7web 8web 9web 10web 11web 12web 13web 14web 15web 16web 17web 18web 19web 20 web 1 题目提示开发注释未及时删除。 直接右键查看源代码。 web 2 在这关我们会发现&#xff1a;1&#xff09;无法使用右键查看源代码&…...

目标网站上做关键字布局/最新经济新闻

正则表达式 正则表达式是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。正则表达式的表达类&#xff1a; 字符类&#xff1a; [abc] a、b 或 c&#xff08;简单类&#xff09;[ ^abc ] 任何字符&#xff0c;除了 a…...

有哪些可以免费做视频的网站/整站排名服务

本文的内容是我的开源代码&#xff08;https://github.com/e10101/AdminLogin&#xff09;的中文说明。项目主要是实现了通过合理配置Nginx的auth_request模块来实现对敏感路径下的内容进行访问限制。 代码 可通过Github访问&#xff1a;https://github.com/e10101/AdminLogin&…...

dede 门户网站/推广产品的方法和步骤

共回答了13个问题采纳率&#xff1a;84.6%172.19.52.128/26代表该网段为172.19.52.128-172.19.52.191&#xff0c;段内2^8/2^(26-3*8)64个IP地址&#xff0c;划分为两个16IP地址的子网&#xff0c;一个32IP地址的子网&#xff0c;三个子网分别为172.19.52.128/28、172.19.52.14…...

息烽做网站公司有哪些/网站seo关键词优化技巧

Deadline&#xff1a; 2018-12-24 10:00PM&#xff0c;以提交至班级博客时间为准。 如果你觉得你的总评成绩不理想或者希望再提高&#xff0c;请根据博客要求&#xff0c;写一篇个人随笔 参考来自&#xff1a;http://www.cnblogs.com/xinz/archive/2012/03/26/2417699.html&…...

云南建设厅网站首页/看b站视频下载软件

检测foodname是否重复 select foodname,count(*) as count from tablename group by foodname having count>1;...

横峰县建设局网站/crm系统

0.巨大的地址空间这个已经不用再说了。除了空间巨大&#xff0c;固定长度的前缀分配也使得地址分配更加均衡。1.ICMPv6真正的有了用武之地&#xff1a;地址/路由配置的自动化IPv6使得联网设备真的成了即插即用&#xff0c;一切都是通过自动生成的链路本地地址开始的&#xff0c…...