Spring Cloud Alibaba微服务实战一 - 基础环境准备

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO

联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬

学习必须往深处挖,挖的越深,基础越扎实!

阶段1、深入多线程

阶段2、深入多线程设计模式

阶段3、深入juc源码解析


阶段4、深入jdk其余源码解析


阶段5、深入jvm源码解析

码哥源码部分

码哥讲源码-原理源码篇【2024年最新大厂关于线程池使用的场景题】

码哥讲源码【炸雷啦!炸雷啦!黄光头他终于跑路啦!】

码哥讲源码-【jvm课程前置知识及c/c++调试环境搭建】

​​​​​​码哥讲源码-原理源码篇【揭秘join方法的唤醒本质上决定于jvm的底层析构函数】

码哥源码-原理源码篇【Doug Lea为什么要将成员变量赋值给局部变量后再操作?】

码哥讲源码【你水不是你的错,但是你胡说八道就是你不对了!】

码哥讲源码【谁再说Spring不支持多线程事务,你给我抽他!】

终结B站没人能讲清楚红黑树的历史,不服等你来踢馆!

打脸系列【020-3小时讲解MESI协议和volatile之间的关系,那些将x86下的验证结果当作最终结果的水货们请闭嘴】

本系列文章使用SpringCloud Alibaba一步一步构建你的微服务架构体系,这是第一篇“基础环境准备”,欢迎大家持续关注!

Springcloud Aibaba现在这么火,我一直想写个基于Springcloud Alibaba一步一步构建微服务架构的系列博客,终于下定决心从今天开始本系列文章的第一篇 - 基础环境准备

本系列文章内容主要基于三个微服务:用户服务AccountService,订单服务OrderService,产品服务ProductService

用到的组件有:

  • 注册中心、配置中心 Nacos
  • 限流 Sentinel
  • 分布式事务 Seata
  • 网关 SpringCloud Gateway
  • 认证授权 Spring Cloud Oauth2
  • docker、docker-compose

由于用到的组件相对较多,部署会很繁琐,最关键的是没有资源服务器,所以在开发过程中我会逐渐将一些组件使用docker-compose部署。

本篇内容就是使用Dokcer-compose部署Nacos,Sentinel,Mysql,作为后面的系列文章的基础环境。

如果你对docker或者docker-compose不是很熟悉的话,你可以翻看我之前的两篇文章,看完后相信你能很快入手。

  • Docker基础与实战,看这一篇就够了

  • Docker-Compose基础与实战,看这一篇就够了

容器化

mysql

由于nacos需要依赖于Mysql作为资源存储,所以在编写完整docker-compose之前我会先用docker启动临时的mysql容器,然后准备好nacos需要的数据库。

  • 启动临时容器docker run -p3306:3306 --rm --name mysql -e MYSQL_ROOT_PASSWORD=123456 -v /app/cloud/mysql/data:/var/lib/mysql mysql:5.7此处需要挂载宿主机目录,在启动docker-compse后就不需要再次初始化数据。

  • 用mysql客户端连接你的容器,然后导入nacos的数据表https://github.com/alibaba/nacos/tree/develop/distribution/conf/ nacos-mysql.sql

  • 停止容器,由于加了--rm参数,所以容器会自动删除docker stop 3475ef078d3a

nacos

我们来看看NACOS的环境变量,如下表所示:

配置项描述可选参数默认值
MODE模式cluster/standalonecluster/standalonecluster
PREFER_HOST_MODE是否支持hostnamehostname/ipip
NACOS_SERVER_PORT服务端口号8848
SPRING_DATASOURCE_PLATFORM单机模式支持mysqlmysql/emptyempty
MYSQL_MASTER_SERVICE_HOSTmysql主节点host
MYSQL_MASTER_SERVICE_PORTmysql主节点port3306
MYSQL_MASTER_SERVICE_DB_NAMEmysql主节点数据库名
MYSQL_MASTER_SERVICE_USERmysql主节点用户名
MYSQL_MASTER_SERVICE_PASSWORDmysql主节点密码
MYSQL_SLAVE_SERVICE_HOSTmysql从节点host
MYSQL_SLAVE_SERVICE_PORTmysql从节点port3306

Nacos支持主从配置,考虑到资源问题,我们只配置一台单独的mysql服务器,有资源的同学可以搭建主从环境。

sentinel

sentinel比较简单,直接配置sentinel-dashboard镜像即可。(在系列的开始不需要引入sentinel组件,为了后面不再单独介绍,本次我也把他加到我的docker-compose中)

seata

seata由于一些原因,还没发布官方镜像,暂时搁浅。

docker-compose

以下是我编写的docker-compse文件,大家可以自行修改

    version: "3"
    services:
      mysql:
        container_name: mysql
        image: mysql:5.7
        environment:
          - MYSQL_ROOT_PASSWORD=123456
        volumes:
          - /app/cloud/mysql/data:/var/lib/mysql
        ports:
          - "3306:3306"
        restart: always
    
      nacos:
        image: nacos/nacos-server:1.1.4
        container_name: nacos
        environment:
          - PREFER_HOST_MODE=hostname
          - MODE=standalone
          - MYSQL_DATABASE_NUM=1
          - SPRING_DATASOURCE_PLATFORM=mysql
          - MYSQL_MASTER_SERVICE_HOST=mysql
          - MYSQL_MASTER_SERVICE_DB_NAME=nacos_config
          - MYSQL_MASTER_SERVICE_PORT=3306
          - MYSQL_MASTER_SERVICE_USER=root
          - MYSQL_MASTER_SERVICE_PASSWORD=123456
        volumes:
          - /app/cloud/nacos/logs:/home/nacos/logs
        ports:
          - "8848:8848"
        depends_on:
          - mysql
        restart: always
    
    
      sentinel:
        image: bladex/sentinel-dashboard:latest
        container_name: sentinel
        ports:
          - "8858:8858"
        restart: always

将其上传至你的服务器,执行docker-compose up -d命令启动

环境验证

nacos

访问nacoshttp://192.168.136.129:8848/nacos,使用账号密码nacos/nacos登录,添加一个name=JAVA日知录的配置。

nacos安装成功!

mysql

使用客户端工具连接上mysql服务,查看his_config_info表,确认是否有刚刚的配置

mysql安装成功!

sentinel

访问http://192.168.136.129:8858使用账号sentinel/sentinel登录

sentinel安装成功!

至此前期所需要的组件都安装成功,那么本期的“SpringCloud Alibaba微服务实战 - 基础环境准备”篇也就该结束啦,咱们下期有缘再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值