微服务详细教程之nacos和sentinel实战

server/2024/12/23 14:06:54/

前言

  上一篇文章中已经介绍了java的高并发编程中的问题,现在主要介绍微服相关的问题,其中在网上面经中经常出现的几个微服问题。这也是我们工作中经常遇到的几个问题。

一.微服务有哪些好处?

  微服务优点很多,但是我们通常说一个东西好肯定会跟另一个东西比较, 通常说微服务好会和单体项目进行比较。以下是微服务相对于单体项目的一些显著好处:
在这里插入图片描述
  首先,让我们讨论单体项目的主要一些缺陷:
  单体项目的缺陷:
  1.可扩展性受限: 单体应用通常在可扩展性方面受到限制,因为整个应用程序必须一起扩展。这意味着即使只有一个组件需要更多资源,也必须扩展整个应用程序,这可能会导致资源浪费。
  2.难以维护和更新: 随着时间的推移,单体应用程序往往变得越来越庞大和复杂,难以理解、维护和更新。每次修改都可能引发意想不到的影响。
  3.高风险: 单体应用程序中的一个小错误或故障可能会导致整个应用程序崩溃,因此存在较高的风险。此外,长时间不更新的单体应用可能会受到安全威胁。
  4.技术栈限制:单体应用程序通常使用相同的技术栈,这可能会限制您在项目中使用最新的技术和工具的能力。
  5.团队协作复杂: 单体应用程序的所有组件都在一个代码库中,这可能导致开发团队之间的冲突和协作问题,尤其在大型团队中更为突出。
微服务的优点
  1.可扩展性: 微服务架构允许您根据需要独立地扩展单个服务,而不必扩展整个应用程序,这提供了更高的可扩展性。
  2.灵活性和快速开发: 微服务允许开发团队独立设计、开发和部署服务,这提高了灵活性、允许团队更快地推出新功能和更新。
在这里插入图片描述

二.微服服务组件的介绍

  本文文章基于Spring Cloud Alibaba的技术进行介绍,因为这也是市面上比较主流的,面试也会经常遇到。
  Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性
  Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
  Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
  Alibaba Cloud oss:阿里云对象存储服务(Object storage Serice,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  Alibaba Cloud schedulerX:阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。

1.Nacos

1.1 基本架构及概念

  nacos的定义延用官方文档中的定义,服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:
在这里插入图片描述

  nacos相关的更加详细的介绍,请参考官方文档,包括如何部署nacos,用什么方式部署,如docker,k8s等方式部署,通常情况下docker部署更加的经济一点吧。nacos官方文档
  SpringBoot集成于nacos组件具体如下所示。
  1.首先引入依赖,改pom.xml文件。

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version>
</parent><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.2.2.RELEASE</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.2.2.RELEASE</version></dependency>
</dependencies>

2.修改yaml文件

spring:profiles:# 指定环境active: devapplication:name: democloud:# nacos server dataId# ${spring.application.name)}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}nacos:# Nacos服务注册中心discovery:serverAddr: 172.16.2.246:8848group: DEMO_GROUPnamespace: 25af15f3-ae79-41c3-847d-960adb953185username: nacospassword: nacos# Nacos作为配置中心config:server-addr: 172.16.2.246:8848file-extension: yamlgroup: DEMO_GROUPnamespace: 25af15f3-ae79-41c3-847d-960adb953185username: nacospassword: nacos# 加载多配置extension-configs:- data-id: user.yamlgroup: DEMO_GROUPrefresh: true

  nacos在电商平台的应用,每个业务模块的微服都注册成了一个域名,方便别的微服调用,如下所:
在这里插入图片描述
  其中nacos会给微服务发心跳,如果微服务每5s响应一次,nacos收到响应,就认为服务器还活着,这就是所谓的健康检测。
  远程服务调用Feign,具体调用如下,feign的相关的环境集成略过。
在这里插入图片描述
  然后调佣远端的微服,只需要加入Autowired注解就可以直接使用。
在这里插入图片描述

sentinel_109">2.sentinel

  sentinel的主要特性如管网给定的特性介绍如下。
在这里插入图片描述
  首先说说服务降级的操作。
  集成SpringBoot环境,也是和上面nacos差不多,改pom.xml和yaml文件。
  修改pom.xml
在这里插入图片描述
  其中开启sentinel对Feign的支持
在这里插入图片描述
  其中服务降级的方法,如下图所示,首先常见方法获取异常后调用降级方法,用到的是java中try{}catch方法捕获异常,回调降级服务方法。
在这里插入图片描述

结束语

  由于文章过长,本文先结束,后面添加更加详细sentinel和分布式事务。尽量做到详细。


http://www.ppmy.cn/server/152514.html

相关文章

在linux系统的docker中安装GitLab

一、安装GitLab&#xff1a; 在安装了docker之后就是下载安装GitLab了&#xff0c;在linux系统中输入命令&#xff1a;docker search gitlab就可以看到很多项目&#xff0c;一般安装第一个&#xff0c;它是英文版的&#xff0c;如果英文不好可以安装twang2218/gitlab-ce-zh。 …

ASP.NET Core - 依赖注入 自动批量注入

依赖注入配置变形 随着业务的增长&#xff0c;我们项目工作中的类型、服务越来越多&#xff0c;而每一个服务的依赖注入关系都需要在入口文件通过Service.Add{}方法去进行注册&#xff0c;这将是非常麻烦的&#xff0c;入口文件需要频繁改动&#xff0c;而且代码组织管理也会变…

JAVA数字人创作文案视频链接提取数字人源码小程序+公众号+APP+H5

JAVA数字人创作文案提取与生成系统&#xff1a;全能型内容创作与运营解决方案 在当今数字化内容井喷的时代&#xff0c;如何高效、创新地生产并传播内容&#xff0c;成为了众多内容创作者、商户乃至企业面临的重要课题。我们的JAVA数字人创作文案提取与生成系统&#xff0c;正…

ARM 处理器平台 Ethernet Compliance 测试流程示例

By Toradex秦海 1). 简介 为了保证基于IEEE 802.3 协议设计的以太网设备接口可以互相兼容互联互通&#xff0c;需要进行 Ethernet Compliance 一致性测试&#xff0c;相关的技术原理说明请参考如下文章&#xff0c;本文就不赘述&#xff0c;主要展示基于 NXP i.MX8M Mini ARM…

Android adb查看某个进程的总线程数

Android adb查看某个进程的总线程数 adb shell 进入控制台&#xff0c;然后&#xff1a; top -m 20 列出当前系统的进程&#xff0c;找到目标进程的id&#xff0c; ps -T 进程id | wc -l Android adb shell ps进程查找以及kill-CSDN博客文章浏览阅读777次&#xff0c;点赞3次&a…

VSCode 中 Git 功能比较:内置 Git、GitLens 与 Git History 插件

在软件开发领域&#xff0c;版本控制是维护代码变更的重要工具。Git 作为最流行的版本控制系统&#xff0c;被广泛集成在各种代码编辑器中。Visual Studio Code&#xff08;VSCode&#xff09;不仅内置了 Git 支持&#xff0c;还提供了丰富的扩展来增强 Git 功能。本文将对比 V…

常用的Git命令总结

git add filename 把文件添加到仓库 git commit –m “注释” 把文件提交到仓库 git status 查看仓库当前状态 git diff filename 查看文件具体修改了什么内容 git log 查看历史记录 git log –prettyoneline&#xff08;简化&#xff09;查看历史记录 git reset –hardH…

【论文笔记】欧美学术论文写作习惯解析:非母语作者的指南

学术论文写作不仅要求内容科学严谨&#xff0c;还要求表达符合国际学术惯例。对于准备向欧美期刊投稿的作者&#xff0c;了解英语论文的写作习惯尤为重要。这篇文章将深入解析欧美人英文论文写作的习惯&#xff0c;并提供实用建议&#xff0c;帮助非母语作者更高效地撰写论文。…