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

本贴最后更新于 1815 天前,其中的信息可能已经斗转星移

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

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

用到的组件有:

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

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

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

如果你对 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
    image.png

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

nacos

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

配置项 描述 可选参数 默认值
MODE 模式 cluster/standalone cluster/standalone cluster
PREFER_HOST_MODE 是否支持 hostname hostname/ip ip
NACOS_SERVER_PORT 服务端口号 8848
SPRING_DATASOURCE_PLATFORM 单机模式支持 mysql mysql / empty empty
MYSQL_MASTER_SERVICE_HOST mysql 主节点 host
MYSQL_MASTER_SERVICE_PORT mysql 主节点 port 3306
MYSQL_MASTER_SERVICE_DB_NAME mysql 主节点数据库名
MYSQL_MASTER_SERVICE_USER mysql 主节点用户名
MYSQL_MASTER_SERVICE_PASSWORD mysql 主节点密码
MYSQL_SLAVE_SERVICE_HOST mysql 从节点 host
MYSQL_SLAVE_SERVICE_PORT mysql 从节点 port 3306

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

访问 nacos http://192.168.136.129:8848/nacos,使用账号密码 nacos/nacos 登录,添加一个 name=JAVA日知录 的配置。
image.png
nacos 安装成功!

mysql

使用客户端工具连接上 mysql 服务,查看 his_config_info 表,确认是否有刚刚的配置
image.png
mysql 安装成功!

sentinel

访问 http://192.168.136.129:8858 使用账号 sentinel/sentinel 登录
image.png
sentinel 安装成功!

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

  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖 • 1 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 17 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • 云计算
    78 引用 • 91 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone

    你品,你细品

  • someone

    有具体代码吗