微服务-初级篇

news/2024/8/26 18:57:44/ 标签: 微服务, 架构, 云原生

微服务-初级篇

  • 认识微服务
  • SpringCloud
    • 2.1 了解
    • 2.2 服务拆分原则
    • 2.3 服务拆分效果
  • Nacos注册中心
    • 3.1 认识和安装Nacos
      • 3.1.1 Nacos下载
      • 3.1.2 Nacos安装
    • 3.2 服务注册到Nacos
  • Feign远程调用
    • 4.1 Feign引入
    • 4.2 Feign配置

认识微服务

1.1 单体架构

特点:

  • 共用一个启动类
  • 共用一个端口号
  • 共用一个数据库

优点:

  • 架构简单
  • 部署成本低
  • 开发成本低

缺点:

  • 耦合度高(维护困难、升级困难)
  • 升级困难
  • 维护成本高

1.2 分布式架构

优点:

  • 降低服务耦合
  • 有利于服务升级和拓展
  • 方便升级改造
  • 维护成本低

缺点:

  • 架构复杂度高
  • 开发困难

1.3 微服务

特征:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
  • 自治:团队独立、技术独立、数据独立,独立部署和交付
  • 面向服务:服务提供统一标准的接口,与语言和技术无关
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

以上四个关于微服务的特征能够进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合

SpringCloud

2.1 了解

SpringCloud是目前国内使用最广泛的微服务框架,官网地址: https://spring.io/projects/spring-cloud

SpringCloud

SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了组件的自动装配。

常见的组件包括:

SpringCloud常见组件

基于Spring Cloud分布式微服务的优点主要包括:

  1. 弹性和可扩展性:Spring Cloud提供了各种解决方案,如服务注册与发现、负载均衡、断路器、限流等,使得微服务架构更加弹性和可扩展。可以根据实际需求动态增加或减少微服务实例,根据流量和负载情况自动调整服务的规模。

  2. 高可用性:通过使用分布式架构,将应用程序拆分为多个小型服务,每个服务都有自己的独立部署和运行环境。当一个服务发生故障时,其他服务仍然可以继续运行,确保整个系统的高可用性。

  3. 增强开发效率:Spring Cloud提供了一系列的开发工具和解决方案,如服务注册与发现(Eureka)、配置中心(Config)、服务网关(Zuul)等。这些工具能够简化分布式系统的开发和部署过程,提高开发效率。

  4. 系统解耦:采用微服务架构可以将一个大型复杂系统拆分为多个小型服务,每个服务只关注自己的业务逻辑,降低了系统的复杂性,并使得各个服务之间的开发、测试和维护更加独立和灵活。

  5. 技术栈灵活性:Spring Cloud是一个开放的框架,可以与各种技术组件和平台集成,如Netflix的Eureka、Ribbon、Hystrix等,使得开发团队可以根据具体需求选择合适的技术栈来搭建分布式系统。

总的来说,基于Spring Cloud分布式微服务可以提供弹性和可扩展性、高可用性、增强开发效率、系统解耦和技术栈灵活性等优点,使得开发和维护分布式系统更加方便和可靠。

2.2 服务拆分原则

原则:

2.3 服务拆分效果

服务拆分效果

Nacos注册中心

3.1 认识和安装Nacos

3.1.1 Nacos下载

Nacos官方地址:https://nacos.io/zh-cn/docs/quick-start.html

3.1.2 Nacos安装

具体安装教程可参考: 阿里Nacos系列——Nacos安装教程(带图–手把手教学

3.2 服务注册到Nacos

1)引入依赖
在父工程的pom文件中的中引入SpringCloudAlibaba的依赖:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.6.RELEASE</version><type>pom</type><scope>import</scope>
</dependency>

在子工程的pom文件中引入nacos-discovery依赖:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>4.0.2</version>
</dependency>

2)配置nacos地址
配置文件
在上图标注的application.yml中添加nacos地址:

spring:cloud:nacos:discovery:server-addr: localhost:8848username: nacospassword: nacos

Feign远程调用

4.1 Feign引入

Feign是一个声明式的http客户端,官方地址:
https://github.com/OpenFeign/feign

4.2 Feign配置

1)引入依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>4.0.2</version>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId><version>4.0.2</version>
</dependency>

2)在启动类上添加注解

@EnableFeignClients // 开启fegin调用

3)编写Feign的客户端

新建一个interface

@FeignClient("type-service")  // 被调用者服务的配置文件里面的名字
public interface TypeFeign {@RequestMapping("type/findTypeAll")   // 注意:路径补全List<Type> findTypeAll();
}

4)优化

将Feign接口抽取到统一的模块中,这样可以降低服务之间的耦合性

5)小结
使用Feign的步骤:
① 引入依赖
② 添加@EnableFeignClients注解
③ 编写FeignClient接口


http://www.ppmy.cn/news/1475364.html

相关文章

会话无界:Eureka中服务的分布式会话管理策略

会话无界&#xff1a;Eureka中服务的分布式会话管理策略 引言 在微服务架构中&#xff0c;随着服务数量的增加&#xff0c;传统的会话管理方法面临着诸多挑战&#xff0c;如数据一致性、服务隔离和水平扩展等。Eureka作为Netflix开源的服务发现框架&#xff0c;虽然本身不直接…

【公益案例展】华为云X《无尽攀登》——攀登不停,向上而行

‍ 华为云公益案例 本项目案例由华为云投递并参与数据猿与上海大数据联盟联合推出的 #榜样的力量# 《2024中国数据智能产业最具社会责任感企业》榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 夏伯渝&#xff0c;中国无腿登珠峰第一人&#xff0c;一生43年…

科普文:K8S中常见知识点梳理

简单说一下k8s集群内外网络如何互通的 要在 Kubernetes&#xff08;k8s&#xff09;集群内外建立网络互通&#xff0c;可以采取以下措施&#xff1a; 使用service&#xff1a; 使用Service类型为NodePort或LoadBalancer的Kubernetes服务。这可以使服务具有一个公共IP地址或端口…

JavaDS —— 单链表 与 LinkedList

顺序表和链表区别 ArrayList &#xff1a; 底层使用连续的空间&#xff0c;可以随机访问某下标的元素&#xff0c;时间复杂度为O&#xff08;1&#xff09; 但是在插入和删除操作的时候&#xff0c;需要将该位置的后序元素整体往前或者向后移动&#xff0c;时间复杂度为O&…

CleanCode、安全编码规范

Clean Code 规范 Clean Code 是由 Robert C. Martin 提出的编写高质量代码的原则。主要包括以下几点 有意义的命名&#xff1a; 命名要准确和清晰&#xff0c;让人一看就知道变量、函数或类的用途。避免使用缩写和难以理解的名称 // 不好的命名 val d: Int 5// 好的命名 v…

嵌入式C++、Qt/QML和MQTT:智能工厂设备监控系统的全流程介绍(附代码示例)

1. 项目概述 本项目旨在开发一套先进的智能工厂设备监控系统&#xff0c;集成嵌入式技术、工业通信协议和人机界面等多项技术&#xff0c;实现对工厂设备的全方位实时监控、高精度数据采集和智能化分析。该系统将显著提升工厂设备的运行效率&#xff0c;大幅降低维护成本&…

记一次 .NET某酒业业务系统 崩溃分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友找到我&#xff0c;说他的程序每次关闭时就会自动崩溃&#xff0c;一直找不到原因让我帮忙看一下怎么回事&#xff0c;这位朋友应该是第二次找我了&#xff0c;分析了下 dump 还是挺经典的&#xff0c;拿出来给大家分享一下吧。 …

【C语言】C语言可以做什么?

目录 1. 操作系统开发1.1 操作系统内核1.2 设备驱动程序1.3 系统工具和实用程序 2. 嵌入式系统2.1 微控制器编程2.2 传感器和执行器控制2.3 消费电子产品 3. 应用程序开发3.1 图形用户界面应用3.2 游戏开发3.3 多媒体处理 4. 网络编程4.1 网络协议实现4.2 服务器和客户端程序4.…

[计算机网络] VPN技术

VPN技术 1. 概述 虚拟专用网络&#xff08;VPN&#xff09;技术利用互联网服务提供商&#xff08;ISP&#xff09;和网络服务提供商&#xff08;NSP&#xff09;的网络基础设备&#xff0c;在公用网络中建立专用的数据通信通道。VPN的主要优点包括节约成本和提供安全保障。 优…

HNU小学期BSP软件编程基础考试题

做了三道考试题&#xff0c;分享一下。 1、音乐&#xff1a;开机后C调&#xff0c;每分钟100拍&#xff0c;播放"1231,345" #include "sys.H" #include "displayer.H" #include "Beep.H" #include "music.H"code unsigne…

5G中的RedCap

5G中的RedCap&#xff1a;降低能力的重要性和实现方式 随着5G技术的推广和普及&#xff0c;设备和终端的多样化使得网络能力的管理变得更加复杂和关键。RedCap&#xff08;Reduced Capability&#xff09;作为一个重要的概念&#xff0c;旨在解决设备能力差异对网络服务和用户…

Linux 防火墙配置指南:firewalld不同服务管理的应用案例(十个)

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作时间&…

Java高频面试基础知识点整理5

干货分享&#xff0c;感谢您的阅读&#xff01;背景​​​​​​高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09; 最全文章见&#xff1a;Java高频面试基础知识点整理 &#xff08;一&#xff09;Java基础高频知识考点 针对人员&#xff1a; 1.全部人员都…

暑假第一次作业

第一步&#xff1a;给R1,R2,R3,R4配IP [R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24 [R1-Serial4/0/0]ip address 15.0.0.1 24 [R2-GigabitEthernet0/0/0]ip address 192.168.2.1 24 [R2-Serial4/0/0]ip address 25.0.0.1 24 [R3-GigabitEthernet0/0/0]ip address 192.…

mov视频怎么改成mp4?把mov改成MP4的四个方法

mov视频怎么改成mp4&#xff1f;选择合适的视频格式对于确保内容质量和流通性至关重要。尽管苹果公司的mov格式因其出色的视频表现备受赞誉&#xff0c;但在某些情况下&#xff0c;它并非最佳选择&#xff0c;因为使用mov格式可能面临一些挑战。MP4格式在各种设备&#xff08;如…

前端构建工具(webpackvite)

这里写目录标题 构建工具webpack介绍配置文件简介entryoutputloaderbabel插件开发服务器&#xff08;webpack-dev-server&#xff09;soureMap vite 构建工具 当我们习惯了在node中编写代码的方式后&#xff0c;在回到前端编写html、css、js这些东西会感觉到各种的不便。比如:…

从数据仓库到数据湖(上):数据湖导论

文章目录 一、什么是数据湖&#xff1f;起源数据湖的特征 二、为什么要用数据湖&#xff1f;三、数据湖与数据仓库的区别数据仓库和数据湖的对比 四、数据湖本质数据存储架构数据处理工具&#xff1a;三类第一类工具第二类工具第三类工具 小结 五、总结六、参考资料 一、什么是…

第一章节:HTML 基础

参考:https://github.com/qianguyihao/Web/tree/master/01-HTML 1)HTML 基础介绍 1.1)Web 万维网 Web(World Wide Web)即全球广域网,也称为万维网。 我们常说的 Web端 就是网页端。 网页 是构成网站的基本元素。网页主要由文字、图像和超链接等元素构成。当然,除了这…

uniapp小程序连接蓝牙设备

uniapp小程序连接蓝牙设备 一、初始化蓝牙模块二、开始搜索三、连接蓝牙四、监听特征值变化五、调用示例utils.js文件 一、初始化蓝牙模块 这一步是必须的&#xff0c;在开发项目过程中&#xff0c;初始化蓝牙模块之后&#xff0c;紧接着就要开启一些监听的api&#xff0c;供后…

Python高级(四)_内存管理

Python高级-内存管理 第四章 内存管理 1、对象池 小整数池 系统默认创建好的,等着你使用 概述:整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。Python 对小整数的定义是 [-5, 256] ,这些整数对象是提前建立好的…