この記事では、群衆のそこSpringBootとSpringCloud基本、紙が続き、迅速SpringCloudプロジェクトを構築するために使用することができるためです。
著者:HelloGitHub- 秦
HelloGitHubが起動し、「オープンソース・プロジェクトを説明するために、」私たちに基づくSpringCloud2.1は、オープンソースプロジェクトを足場マイクロサービスの開発を与えるために、今日シリーズを、 - SpringCloud
プロジェクトソース住所:https://github.com/zhoutaoo/SpringCloud
I.はじめにマイクロサービス
マイクロサービスは、独立して膨張、サービスユニットの独立したアクセスのレベルを展開することができます。Javaの一般的な最小のマイクロサービスユニットは、独立したプロジェクトのSpringBootフレームワークに基づいています。マイクロサービス一つだけ(シングル責任)、サービスのマイクロポートフォリオの複数の完全なプロジェクトや製品呼び出すことができます。そして、あなたが管理する必要があるマイクロ複数のサービス、座標とSpringCloudは、これらのマイクロサービスの執事です。これは、簡単にデプロイするために理解しやすい秩序の枠組みの収集、および分散システム開発キットを維持することは容易です。
今日は、オープンソースプロジェクトのベースとなってSpringCloud2.1足場、事業開発へのメイクプロジェクト開発の迅速なアクセスを導入し、インフラ建設に費やさあまりにも多くの時間なし、のは、このプロジェクトの使用、それを見てみましょう。
第二に、プロジェクト構造
ここでつのゲートウェイ(ゲートウェイ管理者)にmicroServicesについて説明しました。
以下のようにプロジェクトのディレクトリ構造:
ディレクトリ説明:
- DB:プロジェクトデータベースの初期化スクリプト。
- ドッカー:ドッカープロファイルディレクトリは、ドッカーサービスマイクロミラー(画像)としてパッケージされます。
- 設定:プロジェクトの設定ディレクトリの情報を、データベース構成、メッセージ変換の設定を含みます。
- DAO:カタログ・データベース操作は、主に基礎となるデータの変更、追加または削除を確認します。
- エンティティ:エンティティクラスのプロジェクトディレクトリ。
- イベント:イベント処理ディレクトリ。
- 例外:アスペクト指向のグローバルな例外処理によってディレクトリを、例外処理。
- 休ま:マイクロコントローラのディレクトリサービス、インターフェースは外部から提供されています。
- service:微服务业务层目录。
- GatewayAdminApplication:微服务 SpringBoot 入口类。
- resources:项目配置文件目录。
- test:项目单元测试目录。
- pom.xml:maven 项目对象模型文件。
三、实战操作
3.1 前提
- 确保本地安装 Git、Java8、Maven。
- 懂一些 SpringMVC 的知识,因为 SpringBoot 是基于 SpringMVC 演化而来的。
- 懂一些应用容器引擎 Docker、Docker-compose 的知识。
3.2 微服务架构说明
一个完整的项目,微服务架构一般包括下面这些服务:
- 注册中心(常用的框架 Nacos、Eureka)
- 统一网关(常用的框架 Gateway、Zuul)
- 认证中心(常用技术实现方案 Jwt、OAuth)
- 分布式事务(常用的框架 Txlcn、Seata)
- 文件服务
- 业务服务
3.3 运行项目
下面介绍了三种运行的方式:
第一种:一键运行
Linux 和 Mac 系统下可在项目根目录下执行 ./install.sh
快速搭建开发环境。
第二种:本地环境运行
不推荐此方法,但还是简单介绍下。
基础环境安装:mysql、redis,rabbitmq
环境运行:
git clone https://github.com/zhoutaoo/SpringCloud.git #克隆项目
安装认证公共包到本地 maven 仓库,执行如下命令:
cd common mvn clean install #安装认证公共包到本地 maven 仓库
- 安装注册中心 Nacos
- 下载 Nacos
执行如下命令:
unzip nacos-server-0.9.0.zip OR tar -xvf nacos-server-0.9.0.tar.gz cd nacos/bin bash startup.sh -m standalone # Linux 启动命令 cmd startup.cmd # Windows 启动命令
运行网关服务、认证服务、业务服务等
这里以网关服务为例:执行 GatewayAdminApplication.java
注意:认证服务(auth)、网关服务(gateway)、组织管理服务(sysadmin)需要执行数据库初始化脚本。
可通过 swager 接口:http://localhost:8445/swagger-ui.html 测试是否搭建成功,如果能正常访问表示服务启动成功。
说明:
application.yml 文件主要配置 rabbitmq,redis, mysql 的连接信息。
spring: rabbitmq: host: ${RABBIT_MQ_HOST:localhost} port: ${RABBIT_MQ_PORT:5672} username: ${RABBIT_MQ_USERNAME:guest} password: ${RABBIT_MQ_PASSWORD:guest} redis: host: ${REDIS_HOST:localhost} port: ${REDIS_PORT:6379} #password: ${REDIS_PASSWORD:} lettuce: pool: max-active: 300 datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:localhost}:${DATASOURCE_PORT:3306}/sc_gateway?characterEncoding=UTF-8&useUnicode=true&useSSL=false username: ${DATASOURCE_USERNAME:root} password: ${DATASOURCE_PASSWORD:root123}
bootstrap.yml 文件主要配置服务基本信息(端口,服务名称),注册中心地址等。
server: port: ${SERVER_PORT:8445} spring: application: name: gateway-admin cloud: nacos: discovery: server-addr: ${REGISTER_HOST:localhost}:${REGISTER_PORT:8848} config: server-addr: ${REGISTER_HOST:localhost}:${REGISTER_PORT:8848} file-extension: yml sentinel: transport: dashboard: ${SENTINEL_DASHBOARD_HOST:localhost}:${SENTINEL_DASHBOARD_PORT:8021}
第三种:Docker 环境运行
- 基础环境安装
通过 docker 命令安装
# 安装redis docker run -p 6379:6379 --name redis -d docker.io/redis:latest --requirepass "123456" # 安装mysql docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root123 -d docker.io/mysql:5.7 # 安装rabbitmq docker run -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name rabbitmq docker.io/rabbitmq:latest
也可以通过 docker-compose 命令安装
cd docker-compose docker-compose up -d #docker-compose 安装mysql,redis,rabbitmq 服务
下载项目到本地
git clone https://github.com/zhoutaoo/SpringCloud.git #克隆项目
安装认证公共包到本地 maven 仓库执行如下命令:
cd common && mvn install #安装认证公共包到本地maven仓库
docker-compose 运行 Nacos
cd docker-compose docker-compose -f docker-compose.yml -f docker-compose.nacos.yml up -d nacos #启动注册中心
构建消息中心镜像
cd ./center/bus mvn package && mvn docker:build cd docker-compose #启动消息中心 docker-compose -f docker-compose.yml -f docker-compose.center.yml up -d bus-server
需要构建镜像的其他服务有:(注:操作和消息中心镜像构建方式类似)
网关管理服务 (gateway-admin、gateway-web)
组织服务(sysadmin/organization)
认证服务 (auth/authentication-server)
授权服务(auth authorization-server)
管理台服务(monitor/admin)
3.4 运行效果
Nacos 服务中心
所有服务都正常启动,在 nacos 管理中心可查看,实例数表示运行此服务的个数,值为 1 可以理解为服务正常启动。
查看后台服务
命令行执行:docker ps -a
查看 docker 所有进程信息
通过访问微服务对外暴露的接口(swagger)检测服务是否可用。
swager 接口地址:http://IP:port/swagger-ui.html
测试如下图:
四、最后
微服务(SpringBoot、SpringCloud、Docker)现在吵得特别火,它并不是一门新的技术,而是在老技术的基础上衍生出来的,增加了一些新的特性。
教程至此,你应该能够通过 SpringCloud 这项目快速搭建微服务了。那么就可以开始你的微服务学习之旅了,是时候更新一下自己的技能树了,让我们一起来学习微服务吧!
五、参考资料
『讲解开源项目系列』——让对开源项目感兴趣的人不再畏惧、让开源项目的发起者不再孤单。跟着我们的文章,你会发现编程的乐趣、使用和发现参与开源项目如此简单。欢迎留言联系我们、加入我们,让更多人爱上开源、贡献开源~