微服务简介,Springcloud-alibaba中的Nacos简介

news2024/11/20 1:36:27

目录

一:微服务架构

1.0:单体架构

1.1:微服务架构

1.2:微服务架构的优势

1.3:微服务架构的缺点(挑战)

1.4:SpringCloud与微服务关系

1.5:SpringBoot和SpringCloud关系

二:服务注册与发现

2.1:服务注册与发现

2.2:注册中心对比

nacos功能与架构

三:nacos简介

nacos功能:

 nacos安装

1、下载解压

2、配置

3、创建数据库以及表(conf>nacos-mysql.sql)

4、配置startup.cmd,以standalone方式启动

5、启动

nacos注册中心工作流程

Nacos配置中心

主流配置中心对比


一:微服务架构

1.0:单体架构

将项目所有模块(功能)打成jar或者war,然后部署一个进程

优点:
1:部署简单: 由于是完整的结构体,可以直接部署在一个服务器上即可。
2:技术单一: 项目不需要复杂的技术栈,往往一套熟悉的技术栈就可以完成开发。
3:用人成本低: 单个程序员可以完成业务接口到数据库的整个流程。

缺点:
1:系统启动慢, 一个进程包含了所有的业务逻辑,涉及到的启动模块过多,导致系统的启动、重启时间周期过长;
2:系统错误隔离性差、可用性差,任何一个模块的错误均可能造成整个系统的宕机;
3:可伸缩性差:系统的扩容只能只对这个应用进行扩容,无法结合业务模块的特点进行伸缩。
4:线上问题修复周期长:任何一个线上问题修复需要对整个应用系统进行全面升级。
5. 跨语言程度差
6. 不利于安全管理,所有开发人员都拥有全量代码

1.1:微服务架构

解读微服务特点:

1:微服务是一种项目架构思想(风格)

2:微服务架构是一系列小服务的组合(组件化与多服务)

3:任何一个微服务,都是一个独立的进程(独立开发、独立维护、独立部署)

4:轻量级通信http协议(跨语言,跨平台)

5:服务粒度(围绕业务功能拆分)

6:去中心化管理(去中心化”地治理技术、去中心化地管理数据)

1.2:微服务架构的优势

1.易于开发和维护 一个微服务只关注一个特定的业务功能,所以它的业务清晰、代码量较少。开发和维护单个微服务相对比较简单,整个应用是由若干个微服务构建而成,所以整个应用也会维持在可控状态;

2.单个微服务启动较快 单个微服务代码量较少,所以启动会比较快;

3.局部修改容易部署 单体应用只要有修改,就要重新部署整个应用,微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可;

4.技术栈不受限 在微服务中,我们可以结合项目业务及团队的特点,合理地选择技术栈

5.按需伸缩

1.3:微服务架构的缺点(挑战)

1、服务太多,导致服务间的依赖错综复杂,运维难度大

2、微服务放大了分布式架构的系列问题

  • 分布式事务(seata)、

  • 分布式锁怎么处理(redisson),

  • 服务注册与发现(nacos)、

  • 依赖服务不稳定(sentinel)导致服务雪崩怎么办?

3、运维复杂度陡增,部署数量多、监控进程多导致整体运维复杂度提升。

1.4:SpringCloud与微服务关系

  • Springcloud为微服务思想提供了完美的解决方案

  • Springcloud是一些列框架的集合体(服务的注册与发现【注册中心】、服务间远程调用、服务降级、服务熔断、服务限流、分布式事务 等)

    一般我们说springcloud 其实指的是Springcloud-netflix,Springcloud并不是造轮子,只是把Netflix公司的组件做二次开发
    

1.5:SpringBoot和SpringCloud关系

  • SpringBoot专注于快速方便的开发单个个体微服务。

  • SpringCloud是关注全局的微服务协调、整理、治理的框架,它将SpringBoot开发的单体整合并管理起来。

  • SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系。

二:服务注册与发现

2.1:服务注册与发现

服务注册,就是将提供某个服务的模块信息(通常是这个服务的ip和端口)注册到1个公共的组件上去(比如: zookeeper\consul\eureka\nacos)。

服务发现,就是新注册的这个服务模块能够及时的被其他调用者发现。不管是服务新增和服务删减都能实现自动发现。

2.2:注册中心对比

nacos:是阿里开源的,经过了阿里实践的

eureka:netflix公司的,现在不维护了,不开源了

Consul : HashiCorp 公司推出的开源产品,用于实现分布式系统的服务发现、服务隔离、服务配置

对比组件NacosEurekaConsulZookeeper
一致性对比支持AP和CP模型AP模型CP模型CP模型
健康检查tcp/http/client Beatclient BeatTCP/HTTP/gRPCkeep Alive
负载均衡策略RibbonRibbonFabio-
雪崩保护
自动注销实例支持支持不支持支持
访问协议HTTPHTTPHTTPTCP
监听支持支持支持支持支持
多数据中心支持支持支持不支持
跨注册中心同步支持不支持支持不支持
Springcloud集成支持支持支持不支持
Dubbo集成支持不支持不支持支持
K8s集成支持不支持支持不支持

三:nacos简介

nacos架构:

nacos功能:

  • 名字服务 (Naming Service)

命名服务是指通过指定的名字来获取资源或者服务的地址,提供者的信息

  • 配置服务 (Configuration Service)

动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。

 nacos安装

下载地址:https://github.com/alibaba/nacos/tags

1、下载解压

2、配置

3、创建数据库以及表(conf>nacos-mysql.sql)

注意 新版本的 nacos 的 数据库文件 叫 nacos-mysql.sql , schema.sql 是 derby 数据库的 注意 不要选择错了,

4、配置startup.cmd,以standalone方式启动

5、启动

nacos注册中心工作流程

        Nacos支持CP+AP模式,即Nacos可以根据配置识别为CP模式或AP模式,默认是AP模式。如果注册Nacos的client节点注册时ephemeral=true,那么Nacos集群对这个client节点的效果就是AP,采用distro协议实现;而注册Nacos的client节点注册时ephemeral=false,那么Nacos集群对这个节点的效果就是CP的,采用raft协议实现。根据client注册时的属性,AP,CP同时混合存在,只是对不同的client节点效果不同。Nacos可以很好的解决不同场景的业务需求。

一句话概括就是Nacos = Spring Cloud注册中心 + Spring Cloud配置中心。

Nacos配置中心

小结:

Nacos:注册中心,解决服务的注册与发现

Ribbon:客户端的负载均衡器,服务集群的负载均衡

OpenFeign:声明式的HTTP客户端,服务远程调用

Nacos:配置中心,中心化管理配置文件

主流配置中心对比

目前市面上用的比较多的配置中心有:Spring Cloud Config、Apollo、Nacos和Disconf等。 由于Disconf不再维护,下面主要对比一下Spring Cloud Config、Apollo和Nacos。

对比项目Spring Cloud ConfigApolloNacos
配置实时推送支持(Spring Cloud Bus)支持(HTTP长轮询1s内)支持(HTTP长轮询1s内)
版本管理支持(Git)支持支持
配置回滚(Git)支持支持支持
灰度发布支持支持不支持
权限管理支持(依赖Git)支持不支持
多集群支持支持支持
多环境支持支持支持
监听查询支持支持支持
多语言只支持Java主流语言,提供了Open API主流语言,提供了Open API
配置格式校验不支持支持支持
单机读(QPS)7(限流所致)900015000
单机写(QPS)5(限流所致)11001800
3节点读(QPS)21(限流所致)2700045000
3节点写(QPS)5(限流所致)33005600

        从配置中心 角度来看,性能方面Nacos的读写性能最高,Apollo次之,Spring Cloud Config依赖Git场景不适合开放的大规模自动化运维API。
        功能方面 Apollo最为完善,nacos具有Apollo大部分配置管理功能,而Spring CloudConfig不带运维管理界面,需要自行开发。
        Nacos的一大优势是整合了注册中心、配置中心功能,部署和操作相比Apollo都要直观简单,因此它简化了架构复杂度,并减轻运维及部署工作。 

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

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

相关文章

RabbitMQ下载与安装

RabbitMQ下载与安装 想要使用RabbitMQ首先要有Erlang/OTP的运行环境,也就是说首先要下载erlang 在下载Erlang/OTP之前,需要弄清楚RabbitMQ和ErLang之间的版本对应关系。 The table below provides an Erlang compatibility matrix of currently suppo…

用html5、css3和一些简单的js代码写了一个个人网站,之后如何上线?

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言网站上线方案1 Git…

跨境电商怎么做?如何选品及销售?

跨境电商是指在不同国家和地区之间进行的电子商务交易活动。它的出现极大地促进了国际贸易和跨境交流。对于个人来说,通过跨境电商可以更加方便地购买到国外的优质商品,也可以将自己的产品推向全球市场。但是,对于大多数人来说,跨…

一文搞定Shell编程中的单引号、双引号、反引号和转义符的区别和使用

前言 Shell编程中,不仅会是使用变量,还经常会使用$、\、单引号、双引号、反引号等符号。 这些符号在使用中,有时候难免混乱,所以整理此文,便于学习,希望对你有用 文章目录 前言一. 符号的介绍与对比二. 单…

复习html的第二章

什么是 HTML? HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言,而是一种标记语言 (markup language)标记语言是一套标记标签 (markup tag)HTML 使用标记标签来描述网页 HTML 标签 HT…

ECC加密算法详解+python实现

一.前言 目前比较受欢迎的加密算法一共存在两种,一种是基于大整数因子分解问题(IFP)的RSA算法和基于椭圆曲线上离散对数计算问题(ECDLP)的ECC算法。之前对RSA算法进行过很详细的讲解,但是ECC加密算法还没有…

科普文章:会议论文VS期刊论文,两者有何区别?学界的认可度两者一致吗?

文章目录 一、会议论文和期刊论文的概念1.1 会议论文1.2 期刊论文1.3 总结 二、不同之处2.1 内容的不同2.2 审稿周期的不同2.3 认可度的区别 三、投稿的一些建议四、自己的一点小想法 计算机深度学习方向研一学生一枚,论文才有想法,下一步打算开始写了&a…

业务流程绕过测试-业务安全测试实操(18)

业务流程绕过测试,业务上限测试 业务流程绕过测试 测试原理和方法 该项测试主要针对业务流程的处理流程是否正常,确保攻击者无法通过技术手段绕过某些重要流程步骤,检验办理业务过程中是否有控制机制来保证其遵循正常流程。例如业务流程分为三步:第一步,注册并发送验证码:…

JS 循环链表

文章目录 导文循环链表的概念循环链表具有以下几个特点:实现一个循环列表 导文 循环链表是一种特殊的链表数据结构,其中最后一个节点指向链表的头节点,形成一个循环的环状结构。与普通链表不同,循环链表没有明确的结束点&#xff…

【后端面经-java】java线程池满的处理策略

【后端面经-java】java线程池满的处理策略 1. 线程池介绍1.1 基本作用1.2 处理流程1.3 线程池大小设置1.4 线程池参数 2. 线程池满的处理策略2.1 默认--拒绝策略handler 3. 参考资料 1. 线程池介绍 1.1 基本作用 对多个线程使用的资源进行集中管理。 降低资源消耗&#xff1…

【数据挖掘实战】——科大讯飞:跨境广告ROI预测(Baseline)

🤵‍♂️ 个人主页:Lingxw_w的个人主页 ✍🏻作者简介:计算机科学与技术研究生在读 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 &#x1f4a…

前端Vue自定义列表表格信息展示可用于商品规格参数展示

前端Vue自定义列表表格信息展示可用于商品规格参数展示 &#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13131 效果图如下&#xff1a; #### 使用方法 使用方法 <!-- table-list:表格数组 数组里对象可自定义字段 …

Kubernetes 和 Prometheus

资源监控系统是容器编排系统必不可少的组件&#xff0c;也是服务治理的核心之一。而 Prometheus 本质上是一个开源的服务监控系统和时序数据库&#xff0c;是 CNCF 起家的第二个项目&#xff0c;目前已经成为 Kubernetes 生态圈中的监控系统的核心。 Prometheus 的核心组件 Pro…

Run in PaddleX 2.0,一站式搞定飞桨精选模型开发全流程!

2020年4月&#xff0c;飞桨推出了 PaddleX 全流程开发工具&#xff08;以下简称 PaddleX 1.0 系列&#xff09;&#xff0c;其在社区收获了广泛的影响力。PaddleX 1.0 系列采用本地单机版的方式&#xff0c;将深度学习开发全流程从数据准备、模型训练与优化到多端部署端到端打通…

【支付系统】如何生成订单号

通常我们都会用数据库中的主键作为订单号,而id的生成方式又以自增,uuid,雪花id最为常见.但是这些并不适合作为订单号.订单号一般要体现出年月日等信息.方便快速定位是哪个时间的订单.如果我们直接使用时间作为id,会有重复的可能.这里就给大家介绍一种最为简单的一种方式. 时间自…

企业进销存管理系统的设计与实现_kaic

摘 要 企业的进销存管理系统在日常经营过程中起着至关重要的作用&#xff0c;直接影响产品生产 的成本、进度、质量和企业效益。本论文项目以某化工企业对进销存管理系统的需求为 背景&#xff0c;针对企业存在的部门运作独立、信息资源共享度低等造成的进销存管理低率低下、 有…

【console】console用法大全:

文章目录 一、console.log普通信息/console.info提示性信息/console.error错误信息/console.warn警示信息二、console.time()和console.timeEnd()>查看执行所用时间三、console.group()和console.groupEnd()>让控制台输出的语句产生不同的层级嵌套关系四、console.profil…

什么是HTTP 500内部服务器错误,要怎么修复

HTTP 500是一种原始的错误代码&#xff0c;它指示网站服务器在处理请求时发生了内部错误&#xff0c;不过具体错误原因是不确定的。一般情况下&#xff0c;这种错误通常是由服务器程序上的bug或者配置问题造成的。当服务器收到请求时&#xff0c;尝试执行它时&#xff0c;但是发…

使用径向基函数(RBF)神经网络对我们自己的excel数据进行分类---包括详细的python代码,RBFRegressor

文章目录 一、 径向基神经网络&#xff08;Radial Basis Function Neural Network&#xff09;是什么&#xff1f;二、径向基函数(RBF)神经网络对我们自己的excel数据进行分类---包括详细的python代码总结 一、 径向基神经网络&#xff08;Radial Basis Function Neural Networ…

Go 将引入标准库 v2 版本,首个动手的是:math/rand/v2!

大家好&#xff0c;我是煎鱼。 最近 Go 核心团队负责人 Russ Cox&#xff08;下称&#xff1a;rsc&#xff09;发起了一项 “讨论”。希望正式开启 Go 标准库的 v2 版本&#xff0c;相当于老树发新芽了。 Go 标准库升级 v2 原因 这次会发起这个提案的最直接原因是&#xff1a;我…