百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

「Java Spring Cloud 实战之路」- 使用Nacos和网关中心的创建

qiyuwang 2024-11-18 16:17 10 浏览 0 评论

0. 前言

在上一节中,我们创建了一个项目架构,后续的项目都会在那个架构上做补充。

1. Nacos

1.1 简介

Nacos可以用来发现、配置和管理微服务。提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos用来更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以”服务“为中心的现代应用构架(例如微服务范式、云原生范式)的服务基础设置。

也就是通常我们所说的配置中心和服务发现中心。

1.2 搭建和启动

Nacos目前版本不支持以Spring boot的形式创建服务,必须以一个Java包的形式单独运行或者以Docker服务的形式运行,我们大概讲解一下本地运行。

下载安装包:

curl https://github.com/alibaba/nacos/releases/download/1.2.1/nacos-server-1.2.1.zip
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin

使用源码安装:

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

启动:

Linux/Unix/Mac

启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

bash startup.sh -m standalone

Windows

启动命令:

cmd startup.cmd

或者双击startup.cmd运行文件。



2. Spring Cloud Gateway

整个的网关服务,我们采用的Spring Cloud Gateway。在Spring Cloud微服务里,整个系统只对外公开了网关,其他的服务是对外不可见的。所以需要设置一个让我们可以用的网关服务。

在 nature/manager下创建一个gateway目录,并添加pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>club.attachie</groupId>
        <artifactId>manager</artifactId>
        <version>${revision}</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>club.attachie</groupId>
    <artifactId>gateway</artifactId>
    <packaging>jar</packaging>
    <version>${revision}</version>

</project>

在manager下注册该模块:

<modules>
    <module>gateway</module>
</modules>

2.1 添加 Gateway

创建完成项目后,需要添加依赖包:

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-gateway -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

在gateway项目中,创建如下目录:

├── pom.xml
└── src
    └── main
        ├── java
        │   └── club
        │       └── attachie
        │           └── gateway
        │               └── SpringGatewayApplication.java
        └── resources
            └── bootstrap.yml

创建 SpringGateAppliction.java文件,代码如下:

package club.attachie.gateway;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.context.config.annotation.RefreshScope;

/**
 * @author attaching
 */
@SpringBootApplication
@EnableDiscoveryClient
@RefreshScope
public class SpringGatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringGatewayApplication.class, args);
    }
}

在resource目录下创建 bootstrap.yml:

spring:
  application:
    name: gateway

yml 是Spring 的一种配置文件格式,其中名称有application和bootstrap,bootstrap比application先加载。

2.2 添加 nacos

先在 nature/pom.xml 添加 nacos 版本号:

<nacos.version>2.2.1.RELEASE</nacos.version>

然后在dependencyManagement > dependencies 下添加 nacos相关依赖管理:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>${nacos.version}</version>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-starters</artifactId>
    <version>${nacos.version}</version>
</dependency>

在Gateway项目中pom.xml 添加:

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

然后回过头来,在bootstrap里设置:

spring:
  application:
    name: gateway

  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848



3 总结

nacos的配置和Gateway应用的介绍就到这里为止了,因为个人并未对相关技术进行过多深入的研究,所以目前只能做到这些。后续研究深入了,会在这个系列中补齐的。

求关注,求点赞,求转发~~有啥可以评论哟

相关推荐

铭说 | 一句话木马的多种变形方式

今天来和大家聊一聊,一句话木马...

某教程学习笔记(一):13、脚本木马原理

我和她说,如果有天你要离开我,你就跟我掰手腕,赢了你就让你走,她说我那么瘦小怎么会赢。后来她真的要和我分手,我把右手放在桌子上,眼看我要赢的时候,她把左手放到右手上,我抬头看她咬着牙眼里含着泪,我知道...

年中盘点:详细分析2019年上半年爆发的macOS恶意软件

概述自从我们在去年12月对2018年的macOS恶意软件进行年终盘点以来,我们发现新型macOS恶意软件的爆发数量有所增加。一些旧恶意软件家族产生了新的变种,一些恶意软件使用了新的技巧,同时还产生了一...

Webshell免杀研究(webshell免杀马)

前言不想当将军的士兵不是好士兵,不想getshell的Hacker不是好Hacker~有时候我们在做攻防对抗时经常会碰到可以上传webshell的地方,但是经常会被安全狗、D盾、护卫神、云锁等安全软件...

一个合格的seoer应该掌握的基本技能和知识点!

1.301重定向2.404错误页面3.url表转化4.三导航5.树桩结构6.网站目录优化7.网站内连接8.更新带动器9.Gzip压缩技术的意义!10.http状态码是否正常11.URL静态化12.网站...

Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建)

具体案例:局域网内有两台主机,一台Linux、一台Windows,现在需要配置一台Cacti监控服务器对这两台主机进行监控...

php opcache 的工作原理(php aop 实现原理)

opcachePHP扩展实现了各种功能,以透明的方式加速PHP。顾名思义,它的起源和主要目的是操作码缓存,但现在它还包含一个优化器和即时编译器。然而,这篇博文将只关注操作码缓存方面。...

win7下apache+mysql+php安装配置(mysql在win7下安装)

一.首先下载好要用的apache版本:http://httpd.apache.org/download.cgimysql版本:http://dev.mysql.com/downloads/mys...

Ubuntu linux 上的 Nginx 和 Php 安装

教程-在UbuntuLinux上安装Nginx1.安装Nginx服务器和所需的包。apt-getupdatebrapt-getinstallnginx...

只需要四步,就能完成PHP搭建(如何搭建php运行环境)

搭建php的方法主要分为独立安装和集成安装两种,独立安装需要分别下载apache,mysql和php,而集成只需要下载一个软件安装包,比较简单,很适合新手。集成安装包有WampServer、appse...

判断元素是否在数组内的几种方法对比

数组是很常用的一个数据结构,而且经常需要判断某个元素是否在数组中,这在...

如何从 PHP 过渡到 Golang?(php转go还是java)

我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...

Thinkphp3.2.3及以下版本漏洞整理

欢迎搜索公众号:白帽子左一每天分享更多黑客技能,工具及体系化视频教程...

【php学习笔记】php中str_split()方法使用笔记

PHP是一种广泛应用的编程语言,它有许多内置函数和方法,用来方便我们对数据进行处理和操作。其中,字符串处理是PHP中常见的任务之一。str_split()是PHP中的一个字符串方法,它用来将字符串分割...

Redis中BitMap是如何储存的,以及PHP如何处理

setbit,getbit这些命令在redis是如何储存和获取的呢?直接通过get获取到的值我们如何判断对应的位是0或者1?...

取消回复欢迎 发表评论: