alibaba,cloud,springboot,最佳实践版本:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
核心依赖
Jdk: 8
Maven: 3.8.7
Nodejs: 10.24.1
| 依赖 | 版本 |
|---|---|
| Spring Boot | 2.7.10 |
| Spring Cloud | 2021.0.5 |
| Spring Cloud Alibaba | 2021.0.5.0 |
| Mybatis Plus | 3.5.2 |
| Swagger | 3.0.0 |
| behappy redis | 0.0.4 |
| wxpay-sdk | 0.0.3 |
| Hutool | 5.6.4 |
| xxl job | 2.3.1 |
| druid | 1.2.9 |
首先我们需要一个能安装docker的环境,这里使用vagrant+virtualBox
virtualBox下载地址:https://www.virtualbox.org/wiki/Downloads
- 以管理员身份执行CMD,切到vagrant安装目录的bin路径下
- 执行
vagrant init,它会帮我生成Vagrantfile,如下
D:\HashiCorp\Vagrant\bin>vagrant init
- 我们需要centos7版本的box,这里提供两种办法
- 一种是直接在
vagrant up的时候让服务自己去下载(此种办法可能会由于网络问题下载失败) - 或者通过此地址
https://app.vagrantup.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box,将box下载到本地,然后执行vagrant box add --name centos/7 D:\HashiCorp\Vagrant\boxes\CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box,再使用vagrant box list查看box列表是否存在,已存在则说明成功
- 一种是直接在
- 修改Vagrantfile
Vagrant.configure("2") do |config|
(1..1).each do |i|
config.vm.define "behappy#{i}" do |node|
# 设置虚拟机的Box
node.vm.box = "centos/7"
# 设置虚拟机的主机名
node.vm.hostname="behappy#{i}"
# 设置虚拟机的IP,这里最终得到虚拟机的ip为192.168.56.100
node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0"
# VirtaulBox相关配置
node.vm.provider "virtualbox" do |v|
# 设置虚拟机的名称
v.name = "behappy#{i}"
# 设置虚拟机的内存大小
v.memory = 8192
# 设置虚拟机的CPU个数
v.cpus = 4
end
end
end
end- 启动虚拟机
执行vagrant up,等待启动完成
- 执行
vagrant ssh进入虚拟机 - 执行
sudo -s切至root并修改ssh
vi /etc/ssh/sshd_config
修改以下属性为yes
PermitRootLogin yes
PasswordAuthentication yes- 修改完成后
:wq保存,然后执行service sshd restart,重启ssh - 最后执行
reboot重启(我这里换成xshell登录,账户密码:root@vagrant)
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld- 关闭seLinux
# linux默认的安全策略
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0- 关闭swap
swapoff -a #临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭
free -g #验证,swap必须为0安装ntp
yum install -y ntp
与一个已知的时间服务器同步
# time.nist.gov 是一个时间服务器
ntpdate time.nist.gov
删除本地时间并设置时区为上海
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
yum install -y git
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable docker
systemctl start docker
curl -L https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose- clone
behappy-docker-application项目
cd ~ && git clone https://github.com/behappy-project/behappy-docker-application.git- 先创建mysql,并初始化一些表结构和数据
cd behappy-docker-application/ && docker-compose -f mysql/docker-compose.yml up -d
创建好mysql后,执行doc/05-sql以及doc/nacos下的sql文件: tables_xxl_job.sql-》yygh_manager.sql-》yygh初始化表结构.sql-》yygh初始化数据.sql-》nacos初始化表结构.sql-》nacos初始化数据.sql- 启动其他组件
docker-compose -f redis/docker-compose.yml up -d && docker-compose -f mongo/docker-compose.yml up -d && docker-compose -f rabbitmq/docker-compose.yaml up -d && docker-compose -f nacos/docker-compose.yml up -d && docker-compose -f sentinel/docker-compose.yml up -d && docker-compose -f xxl-job-admin/docker-compose.yml up -d共享配置信息被我放在了
Data Id为application-dev.yml的配置中,可以自行查看且修改
当前配置了如下规则,可自行配置添加
-
下订单和支付两个操作,一旦支付接口达到了阈值,那么需要优先保障支付操作, 那么订单接口就被限流,从而保护支付的目的
-
hospital服务设置统一限流
对于限流和降级,可以在gateway中配置,也可以在单一application中配置,异常统一配置在org.xiaowu.behappy.common.sentinel.exception.SentinelExceptionHandler
或
注:gateway中,每一个RouteDefinition都有id唯一标识,格式为ReactiveCompositeDiscoveryClient_{微服务名},所以routeId配置成{微服务名}是不生效的
关于sentinel的详细教程可以参考:https://wang-xiaowu.github.io/posts/c7b26cd1/
- 启动项目, 各模块作用已标明在下方
- 后端必须启动的模块
BehappyCmnApplication
BehappyGatewayApplication
BehappyHospApplication
BehappyManagerApplication
BehappyMsmApplication
BehappyOrderApplication
BehappyUserApplication
behappy-hospital-admin -- 后台管理
behappy-hospital-user -- 平台页面
git clone https://github.com/behappy-hospital/behappy-hospital-admin.git && git clone https://github.com/behappy-hospital/behappy-hospital-user.git
下载依赖 && 启动(两个项目的下载依赖方式和启动方式都一样)
npm install && npm run dev
医院code:1000_0
签名key:880189488a80a9d7851d63240fd22aba
找到behappy-manager/resources下的department.json, 复制粘贴-科室列表
找到behappy-manager/resources下的schedule.json, 复制粘贴-排班列表
使用localhost访问,不要用ipv4,保证与微信回调地址一致
登陆后会回调到
myheader.vue的loginCallback方法中, 如果openid为空则说明此用户为新用户, 需要绑定手机号. 接着打开手机登录层,绑定手机号
接收到了mq的提醒消息
账户:nacos
密码:nacos
账户:sentinel
密码:sentinel
账户:admin
密码:admin
账户:admin
密码:123456
账户:root
密码:root
账户:root
密码:root
├─behappy-api --放feign和VO/DTO/Constant
│ ├─behappy-api-cmn
│ ├─behappy-api-common
│ ├─behappy-api-hosp
│ ├─behappy-api-manager
│ ├─behappy-api-msm
│ ├─behappy-api-order
│ └─behappy-api-user
├─behappy-cmn --数据字典模块
├─behappy-common --公共模块
│ ├─behappy-common-core --核心模块
│ ├─behappy-common-mongo --mongo模块
│ ├─behappy-common-mybatis --mybatis模块
│ ├─behappy-common-rmq --rabbit mq模块
│ └─behappy-common-sentinel --sentinel/feign配置模块
├─behappy-executor-task --放定时任务, 整合xxl-job使用
├─behappy-gateway --网关模块
├─behappy-hosp --医院模块
├─behappy-manager --后台管理模块
├─behappy-monitor --springboot admin
├─behappy-msm --短信模块
├─behappy-order --订单模块
├─behappy-oss --oss模块
├─behappy-statistics --信息统计模块
├─behappy-user --用户模块
└─doc
├─01-教案
├─02-分析图
├─03-尚医通架构图
├─04-尚医通业务流程图
├─05-sql
└─nacos





















