Spring Cloud Alibaba 容器化部署最佳实践 | 本地部署版本详解

环境声明

在运行本地示例之前,需要保证本机具备以下的基础环境,如果您的本地没有当前的环境,下面会一步步进行搭建,演示搭建过程。

  • Nacos 服务端
  • Seata 服务端
  • RocketMQ 服务端
  • MySQL 服务端

可在国内https://gitee.com/mirrors/Spring-Cloud-Alibaba镜像下载Spring Cloud Alibaba开源项目。

组件服务版本

本项目的各个组件版本请移步至各个社区的 release 页面进行下载并解压。

可查看下面文章的详细配置

host配置

为了保证代码可以正常启动,请先配置好本机的 host 映射,在配置文件中新增如下的映射。
host文件window路径为

C:\Windows\System32\drivers\etc

配置好后在浏览器地址栏输入http://integrated-mysql能访问127.0.0.1的网址就是成功了。地址可以是下面配置的任意一个。

# for integrated-example
127.0.0.1 integrated-mysql
127.0.0.1 nacos-server
127.0.0.1 seata-server
127.0.0.1 rocketmq
127.0.0.1 gateway-service
127.0.0.1 integrated-frontend

数据库配置

下面开始本地环境搭建准备,在数据库配置开始之前,请确保 MySQL 的服务端开启。

初始化业务表

针对第一个场景,订单、账户、库存微服务都需要各自的数据库,而第二个场景模拟点赞也需要存储点赞信息的数据库。

运行 spring-cloud-alibaba-examples/integrated-example/sql/init.sql 的 sql 脚本一键创建业务所需的环境以及 Seata 相关的表。

Seata相关配置可以查看上面的说的《Spring Cloud Alibaba 容器化部署最佳实践 | 本地部署版本 | Seata服务端组件安装》

Nacos配置

至此,数据库的服务配置完毕,下面需要配置 Nacos 的配置中心有关所有的微服务配置文件。

Nacos启动

Spring Cloud Alibaba 容器化部署最佳实践 | 本地部署版本 | Nacos组件安装

为了便于 example 的演示,这里采用 Nacos 的standalone模式启动,进入到 Nacos 解压后的目录下,执行如下命令。

#Linux/Mac环境
sh bin/startup.sh -m standalone
#如果您是Ubuntu环境,执行上述命令启动报错提示[[符号找不到,可以执行如下的命令
bash bin/startup.sh -m standalone
#Win环境
.\bin\startup.cmd -m standalone

新增配置文件

在批量导入配置之前,请先修改integrated-example/config/datasource-config.yaml 中的数据源配置(用户名和密码)。

之后运行spring-cloud-alibaba-examples/integrated-example/scripts/nacos-config-quick.sh 来完成所有微服务配置的一键导入。
在window中可以使用git打开
在这里插入图片描述
在这里插入图片描述
配置已经导进来了

Seata 配置

Spring Cloud Alibaba 容器化部署最佳实践 | 本地部署版本 | Seata服务端组件安装

Nacos 服务注册中心以及配置中心部署完毕之后,下面是 Seata 服务端的配置。

Seata 的 db 模式需要额外配置数据库信息以及修改 Seata 服务端的配置文件,且在新版本中配置文件相较于旧版本进行了合并,因此这里为了便于演示方便,采用 Seata 单机的file模式启动 Seata Server。

启动 Seata Server

进入到 release 解压后的 seata 目录中,执行如下命令。

#Linux/Mac环境
sh ./bin/seata-server.sh
#Win环境
bin\seata-server.bat

RocketMQ 配置

Spring Cloud Alibaba 容器化部署最佳实践 | 本地部署版本 | Rocketmq组件安装

Seata 服务启动后可以启动 RocketMQ 的 NameServer 以及 Broker 服务。

进入到 release 解压后的 rocketmq 目录中,执行如下命令。

启动 NameServer

#Linux/Mac环境
sh bin/mqnamesrv
#Win环境
.\bin\mqnamesrv.cmd

启动 Broker

#Linux/Mac环境
sh bin/mqbroker
#Win环境
.\bin\mqbroker.cmd

运行 Demo 示例

运行Demo的实例可以按着git上的例子测试了。启动过程中可能会遇到意外:

1. No spring.config.import property has been defined

Action:

Add a spring.config.import=configserver: property to your configuration.
    If configuration is not required add spring.config.import=optional:configserver: instead.
    To disable this check, set spring.cloud.config.import-check.enabled=false.

增加依赖:

	<dependency>
	    <groupId>org.springframework.cloud</groupId>
	    <artifactId>spring-cloud-starter-bootstrap</artifactId>
	</dependency>

2. No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?

修改依赖,排除ribbon

<dependency>
   <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.netflix.ribbon</groupId>
            <artifactId>ribbon</artifactId>
        </exclusion>
    </exclusions>
</dependency>

添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
  1. When allowCredentials is true, allowedOrigins cannot contain the special value “*” since that cannot be set on the “Access-Control-Allow-Origin” response header. To allow credentials to a set of origins, list them explicitly or consider using “allowedOriginPatterns” instead.

把Gateway项目下的GatewayConfig类corsFilter方法config.setAllowCredentials(true);注释掉重新启动

猜你喜欢

转载自blog.csdn.net/ren365880/article/details/128085477