• 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
    
    • 1

    配置好后在浏览器地址栏输入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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    数据库配置

    下面开始本地环境搭建准备,在数据库配置开始之前,请确保 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    新增配置文件

    在批量导入配置之前,请先修改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
    
    • 1
    • 2
    • 3
    • 4

    RocketMQ 配置

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

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

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

    启动 NameServer
    #Linux/Mac环境
    sh bin/mqnamesrv
    #Win环境
    .\bin\mqnamesrv.cmd
    
    • 1
    • 2
    • 3
    • 4
    启动 Broker
    #Linux/Mac环境
    sh bin/mqbroker
    #Win环境
    .\bin\mqbroker.cmd
    
    • 1
    • 2
    • 3
    • 4

    运行 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.
    
    • 1
    • 2
    • 3
    • 4
    • 5

    增加依赖:

    	<dependency>
    	    <groupId>org.springframework.cloud</groupId>
    	    <artifactId>spring-cloud-starter-bootstrap</artifactId>
    	</dependency>
    
    • 1
    • 2
    • 3
    • 4

    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>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    添加依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-loadbalancer</artifactId>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    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);注释掉重新启动

  • 相关阅读:
    Python GIL
    AI系统源码ChatGPT网站源码+ai绘画系统/支持GPT4.0/支持Midjourney局部编辑重绘
    c++ 正则表达式的若干难查问题
    自然语言处理(NLP)—— 语言学、结构的主要任务
    C++ 智能指针
    数据结构——单链表
    edge下载网络问题无法下载
    【深度学习】基于卷积神经网络(tensorflow)的人脸识别项目(三)
    OpenCV 在ImShow窗体上选择感兴趣的区域
    什么是杠杠炒股平台
  • 原文地址:https://blog.csdn.net/ren365880/article/details/128085477