应用于分布式系统-微服务创建 | 学习笔记

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 快速学习应用于分布式系统-微服务创建。

开发者学堂课程【Spring Cloud Alibaba Nacos 详解(上)应用于分布式系统-微服务创建】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/724/detail/12925


应用于分布式系统-微服务创建

 

内容介绍

. Nacos  配置管理

.应用在分布式系统中

.发布

.Spring cloud 是什么

.如何使用


. Nacos  配置管理

1.用户通过 Nacos  serverServer 的控制台集中对多个服务的配置进行管理。

2.各服务统一从 Nacos  Server 中获取各自的配置,并监听配置的变化。

 

二.  应用在分布式系统中

如何应用在分布式系统中,典型的微服务架构使用图,

如图:

图片.png

 

 

使用 Nacos  进行配置管理的具体过程,可以看到 Nacos Serber 就是整个 Nacos 架构服务发现中心,下边的两个Service 就是所说的微服务。

分别是 Provider service Corsumer service 这两个配置都会在两个 Server 当中去发布,这里面要清楚各个微服务要获取监听配置,获取配置指的是远程从Server 当中去获取它的配置文件信息,所谓监听配置就是变更的时候 Nacos  Server 会通知这个 Servers Servers 就会获取到最新更新的配置信息,这就是整个配置管理的流程。

 

三、发布

在创建微服务的时候我们可以在 dev 里面去创建 Data ID 就是我们说的配置文件,接下来要发布配置,发布之后各个微服务要获取配置,首先在 Nocos 当中去发布配置,接下来去创建两个微服务,并且用微服务去获取配置,下面按照这个流程去发布配置这两个微服务我们分别起名为 Service1 Service2

首先我们在 DevService当中来发布两个微服务对应的文件,我们来添加配置,首先发布的时候要切到 dev的配置中,我们选择 yaml 格式,这里面进行配置管理测试,我们把流程调通了,之后把配置文件内容改成一个系统所用的配置文件内容,重点是流程得调通,接下来就可以发布,并且Test group就是我们说的定义的组。

 

图片.png

接下来用相同的说法来配置Service2,现在我们就把它配置文件的内容写上去,刚才是 Service1 config 现在是 Service 2 config ,点发布,然后就发布成功。

 

图片.png

 

发布成功完了就要获取配置,获取配置就是要把两个微服务建立起来。两个微服务会依赖相同的依赖,通常我们是建立一个副工程,这里我们打开 Idea 然后在这里面新建一个 Project 点完成,然后这里面的 Nacos  副工程就弄好了,这个副工程的主要内容就是它的 pom 文件,我们这里就是规范它的依赖,这里把它的插件拷过来,我们最终把微服务架构当中,将当前比较流行的微服务架构 Spring cloud 以及当前阿里巴巴新出的一套的微服务新出的套件,之后会介绍阿里巴巴里面的 spring 阿里巴巴和 Springcloud ,所以我们先把三个依赖加进去,会使用 Spring 的阿里巴巴的套件进行开发,所以这里面需要把 Spring 的阿里巴巴和 spring Cloud 都添加进来,这就是我们说的副工程。

然后刷新一下,接下来我们就要创建微服务,就是两个微服务,一个 Service1 一个 Service2了,这两个微服务,我们知道刚才依赖里面我们依赖了 Spring 阿里巴巴。

 

四. Spring cloud是什么

Spring Cloud 是一系列框架的有序集合。

它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础  设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,不会独立的去开放,创建这些,但是是集成的中心,都可以用 Spring  Boot 的开发风格做到一键启动和部署。

Spring Cloud 并没有重复制造轮子,它只是将目前各家公司开发的比  较成熟、经得起实际考验的服务框架组合起来,集成最多的组件要属 Netflix 公司,通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud Alibaba Nacos Discovery 是 Spring Cloud Alibaba 的子项目,而 Spring Cloud Alibaba 是阿里巴巴公司提供的开源的基于 Springcloud 的微服务套件合集,它致力于提供微服务开发的一站式解决方案,可以理解为spring cloud是一套微服务开发的标准,spring cloud alibaba spring cloud Netlix是实现。

使用 Spring Cloud Alibaba 方案,开发者只需要添加一些注解和少量配置,就可以将Spring cloud 应用接入到阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统,由于 Nacos 是阿里的中间件,因此,若开发 spring cloud 微服务应用,使用 spring cloud alibaba Nacos  config 来集成 Nacos  的配置管理功能是比较明智的选择。

 

五.怎么使用

1.新建项目 service1

首先新增一个名为 Service1工程,

并添加 Group ID com.alibabacloub Artifact id

Spring cloud starter alibaba config Starter.service1新建的时候我们找到模块,新建一个副工程,完成模块名,

这时Service1 就创建好了,选择副工程,1就变成了2了,这样两个微服务工程都是新建的 Nacos  config,我们要用的是阿里巴巴提供的集成  Nacos  的 Cloud starte alibaba Nacos  config

这个非常长但是是有规律的, Nacos 配置管理的时候的一套依赖,所以整个项目基于 spring 的开发,所以就是它的依赖,那么同样的道理,service2 当中也要加这样的依赖,到这为止 service1 service2

2. Bootstrap.yml 配置

一般来说, Spring boot 的配置将在 Application.yml 文件中编写,由于使用外部配置中心,必须将原先的 Application.yml 重命名 Bootstrap.ymlBootstrap.yml

如下所示:

spring.cloud.Nacos .config.server-addr 指定了 Nacos  server 的网络地址和端口号。

启动得有一个配置文件,这个配置文件的内容首先要定义端口, Spring工程的名称从这里开始就只是 spring cloud,它的一系列的配置在这里,拷过去,可以看到配置名和配置中心,配置文件的扩展名,DataID的名称就是我们看到的 applicationname 加上扩展名,就是从配置文件上看不到配置文件是什么,其实当系统启动的时候,它就会从配置中心读取配置文件,读取的配置文件就是 Service1.yml

它之所以知道读取配置文字,是因为它读取的时候是有规律的,这个 Name Service1 就是我们的共同名,这个扩展名叫 ynm,这个项目的名称加上扩展名就是测试的,我们将开发 dev 的配置上去,所以里面没有配置ID 其实这里面会自动找到 Service1.ynm,就是根据项目名和扩展名组成了 ID,还有 ,Spring 都可以找 Data ID 具体配置文件的内容,这就是我们说到到 Nacos 整合到阿里巴巴的具体方法。

3.启动客户端

具体启动客服端的话,就要启动客服类了,

新建一个 com.itheina.Nacos .在下面就可以叫 Service1,这个启动类就叫 spring boot 的启动类,我们说最终我们需要去获取配置,配置类先写好,Spring boot 的启动方式,就是 Class Args,只要运行这个方法,整个项目就启动起来了,同样的方法我们把Service2也启动一下,我们先创建好,这个就是 Service2,这里面需要去把上面的程序创建一个包,Service2 的微服务,下边走,微服务创建好了,我们在配置文件的时候要读取,Nacos 的配置中心,这里面配置的信息我们要了解,要根据项目名自动找到 ID,这两个微服务的构建就完成。

相关文章
|
2天前
|
存储 供应链 安全
区块链技术原理及应用:深入探索分布式账本技术
【4月更文挑战第30天】区块链,从加密货币的底层技术延伸至多元领域,以其分布式账本、去中心化、不可篡改性及加密技术重塑数据存储与交易。核心组件包括区块、链和节点,应用涵盖加密货币、供应链管理、金融服务等。尽管面临扩展性等挑战,未来潜力无限。
|
3天前
|
负载均衡 应用服务中间件 nginx
服务器架构、分布式系统、负载均衡、微服务、高可用性
**分布式系统取代单体架构,以微服务实现高扩展性和灵活性。通过负载均衡技术增强性能,防止单点故障,结合冗余备份与故障切换保障高可用性,这种架构是支撑大规模在线业务的关键。**
32 3
|
3天前
|
消息中间件 PHP 数据库
【PHP开发专栏】PHP在微服务架构中的应用
【4月更文挑战第29天】微服务架构将大型应用拆分成独立小服务,PHP在其中可作为API网关、微服务提供者,参与服务发现、消息队列处理和事件驱动。最佳实践包括选择合适PHP框架、使用容器化技术、定义服务契约、采用分布式缓存、实现服务发现、监控和日志收集、优化数据库设计以及注重安全性。遵循这些实践,PHP开发者能构建高效、可扩展的微服务应用。
|
7天前
|
负载均衡 Java 网络架构
【SpringCloud】如何理解分布式、微服务、集群
【SpringCloud】如何理解分布式、微服务、集群
18 1
|
8天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:容器化与微服务架构的融合
【4月更文挑战第24天】 随着云计算的不断演进,云原生技术已成为企业数字化转型的核心动力。本文深入探讨了如何通过容器化技术和微服务架构的融合,构建高效、可扩展且易于管理的云原生应用。我们分析了容器化带来的隔离性和可移植性优势,以及微服务架构在提升系统灵活性和促进团队协作方面的重要作用。文章还提供了实施策略,包括选择合适的容器平台、确保服务间通信的安全性以及持续集成/持续部署(CI/CD)的实践,以帮助企业实现敏捷开发和快速迭代。
|
13天前
|
Kubernetes Cloud Native Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(下)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
54 0
|
13天前
|
Cloud Native 算法 Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(上)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
50 0
|
19天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
19 4
|
5天前
|
NoSQL Java 关系型数据库
【Redis系列笔记】分布式锁
分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路
27 2
|
2天前
|
NoSQL Java 大数据
介绍redis分布式锁
分布式锁是解决多进程在分布式环境中争夺资源的问题,与本地锁相似但适用于不同进程。以Redis为例,通过`setIfAbsent`实现占锁,加锁同时设置过期时间避免死锁。然而,获取锁与设置过期时间非原子性可能导致并发问题,解决方案是使用`setIfAbsent`的超时参数。此外,释放锁前需验证归属,防止误删他人锁,可借助Lua脚本确保原子性。实际应用中还有锁续期、重试机制等复杂问题,现成解决方案如RedisLockRegistry和Redisson。