微服务(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.mzph.cn/news/588916.shtml

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

相关文章

java maven项目添加oracle jdbc的依赖

一般添加依赖是直接在pom.xml中添加配置即可,Maven会自动获取对应的jar包,但是oracle驱动依赖添加后会显示红色,代表找不到依赖项,是因为Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《兼顾捕碳强度与可再生能源消纳的储能容量配置优化方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主的专栏栏目《论文与完整程序》 这个标题涉及到两个主要方面:捕碳强度和可再生能源的消纳,以及与之相关的储能容量配置的优化方法。下面我会逐一解读这两个方面&…

【快速全面掌握 WAMPServer】10.HTTP2.0时代,让 WampServer 开启 SSL 吧!

网管小贾 / sysadm.cc 如今的互联网就是个看脸的时代,颜值似乎成了一切! 不信?看看那些直播带货的就知道了,颜值与出货量绝对成正比! 而相对于 HTTP 来说,HTTPS 绝对算得上是高颜值的帅哥,即安…

深入理解Mysql事务隔离级别与锁机制

1. 概述 我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题&am…

Decorator装饰模式(单一责任)

Decorator(装饰模式:单一责任模式) 链接:装饰模式实例代码 解析 目的 在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性&#xff…

《数据结构、算法与应用C++语言描述》- 平衡搜索树 -全网唯一完整详细实现插入和删除操作的模板类

平衡搜索树 完整可编译运行代码见:Github::Data-Structures-Algorithms-and-Applications/_34Balanced search tree 概述 本章会讲AVL、红-黑树、分裂树、B-树。 平衡搜索树的应用? AVL 和红-黑树和分裂树适合内部存储的应用。 B-树适合外部存储的…

[Ray Tracing: The Rest of Your Life] 笔记

前言 开年第一篇博客~ 整理了三四个小时才整理完orz。 这一部分是光线追踪三部曲的最后一部,主要介绍了蒙特卡洛积分、重要性采样等内容。场景上没有什么大的改变,基本上就是在Cornell Box中渲染的,本篇主要在加速收敛,提升渲染效…

【快速全面掌握 WAMPServer】09.如何在 WAMPServer 中安装 Composer

网管小贾 / sysadm.cc WAMPServer 的大名想必应该有不少人特别是新手小白们略有耳闻吧。 它是出自法国大神之手的一款 PHP 开发环境集成包,工作于 Windows 环境,类似于它这样的集成包在 Linux 平台上反正我是没找到,所以它应该算是对使用 Wi…

MIT线性代数笔记-第35讲-期末复习

目录 35.期末复习打赏 35.期末复习 已知一个矩阵 A A A满足 A x ⃗ [ 1 0 0 ] A \vec{x} \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} Ax ​100​ ​无解且 A x ⃗ [ 0 1 0 ] A \vec{x} \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix} Ax ​010​ ​仅有一个解 (1)求 A A A的…

linux安装rabbitmq

文章目录 前言一、下载安装包二、erlang1.安装依赖2.解压3.安装4.环境变量5.验证 三、rabbitmq1.安装依赖2.解压3.新建目录4.rabbitmq.env.conf5.rabbitmq.conf6.环境变量7.启动8.验证9.停止 四、安装web1.安装插件2.访问控制台界面 五、开机启动1.编写脚本2.设置开机启动3.测试…

硬件安全模块 (HSM)、硬件安全引擎 (HSE) 和安全硬件扩展 (SHE)的区别

术语 硬件安全模块 (HSM) :Hardware Security Modules硬件安全引擎 (HSE) :Hardware Security Engines安全硬件扩展 (SHE) : Secure Hardware Extensions 介绍 在汽车行业中,硬件安全模块 (HSM)、硬件安全引擎 (HSE) 和安全硬件…

Android长按图标展示快捷方式

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {new Thread(() -> {// 获取ShortcutManager实例ShortcutManager shortcutManager getSystemService(ShortcutManager.class);// 创建要添加的快捷方式ShortcutInfo.Builder shortcutBuilder new ShortcutInfo.Bui…

[蓝桥杯2020国赛]答疑

答疑 题目描述 有 n 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。 老师可以安排答疑的顺序,同学们要依次进入老师办公室答疑。 一位同学答疑的过程如下: 首先进入办公室,编号为 i 的同学需要 si​ 毫秒的时间。然后同学问…

python脚本实现一次提取多个文件下的图片

problem formulation 有时候下载的数据集如下,就很烦,一个里面就一张图片 code import os import shutil# 定义源目录和目标目录 source_dir ./dataset/data/Detection destination_dir ./dataset/data/img# 确保目标目录存在,如果不存…

css原子化的框架Tailwindcss的使用教程(原始html和vue项目的安装与配置)

安装教程 中文官网教程 原始的HTML里面使用 新建文件夹npm init -y 初始化项目 安装相关依赖 npm install -D tailwindcss postcss-cli autoprefixer初始化两个文件 npx tailwindcss init -p根目录下新建src/style.css tailwind base; tailwind components; tailwind ut…

图神经网络--GNN从入门到精通

图神经网络--GNN从入门到精通 一、图的基本表示和特征工程1.1 什么是图1.2 图的基本表示1.3 图的性质--度(degree)1.4 连通图,连通分量1.5有向图连通性1.6图直径1.7度中心性1.7特征中心性( Eigenvector Centrality)1.8中介中心性 …

CentOS 7 实战指南:目录操作命令详解

写在前面 想要在 CentOS 7 系统下更高效地进行目录操作吗?不要犹豫,在这里我为你准备了一篇精彩的技术文章!这篇文章将带您深入了解 CentOS 7 下目录操作相关命令的使用方法。无论您是新手还是有一定经验的用户,这篇文章都将为您…

EasyNTS端口穿透服务新版本发布 0.8.7 增加隧道流量总数记录,可以知晓设备哪个端口耗费流量了

EasyNTS上云平台可通过远程访问内网应用,包含网络桥接、云端运维、视频直播等功能,极大地解决了现场无固定IP、端口不开放、系统权限不开放等问题。平台可提供一站式上云服务,提供直播上云、设备上云、业务上云、运维上云服务,承上…

金蝶云星空其他出库单,审核中/审批流中可以选择序列号设置

文章目录 其他出库单,审核中,审批流中可以选择序列号设置 其他出库单,审核中,审批流中可以选择序列号设置

创建型设计模式 - 抽象工厂模式 - JAVA

创建型设计模式 - 抽象工厂设计模式 一. 简介二. 列子2.1 定义电脑的抽象类和子类2.2 定义抽象工厂类和其实现类2.3 测试 三. 抽象工厂设计模式的好处四. 抽象工厂模式的案例 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续…