桂林网站制作培训班,网页设计代码意思,动漫设计与制作软件下载,微信公众号如何做微网站项目环境准备
1.虚拟机环境
我们可以通过VMWare来安装#xff0c;但是通过VMWare安装大家经常会碰到网络ip连接问题#xff0c;为了减少额外的环境因素影响#xff0c;Docker内容的讲解我们会通过VirtualBox结合Vagrant来安装虚拟机。
VirtualBox官网#xff1a;https:/…项目环境准备
1.虚拟机环境
我们可以通过VMWare来安装但是通过VMWare安装大家经常会碰到网络ip连接问题为了减少额外的环境因素影响Docker内容的讲解我们会通过VirtualBox结合Vagrant来安装虚拟机。
VirtualBox官网https://www.virtualbox.org/
Vagrant官网https://www.vagrantup.com/
Vagrant镜像仓库https://app.vagrantup.com/boxes/search
安装VirtualBox和Vagrant傻瓜式安装。安装完成后需要重启计算机。
在cmd命令窗口输入 vagrant 命令弹出如下内容表示 vagrant 安装成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YE2boEcH-1692790960310)(https://fynotefile.oss-cn-zhangjiakou.aliyuncs.com/fynote/1462/1637300624000/e2bcbccde6334d4f856e7ca3890cfff5.png)]
通过Vagrant安装虚拟机
创建一个空的目录cmd切换到该目录中然后执行 vagrant init centos/7 会创建Vagrantfile文件执行 vagrant up 第一次执行的时候会远程下相关的镜像文件并启动虚拟机。连接虚拟机通过 vagrant ssh 连接
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-diE11QAt-1692790960310)(https://fynotefile.oss-cn-zhangjiakou.aliyuncs.com/fynote/1462/1637300624000/f76f31a510394b12b2ee4e4f044b703b.png)]
网络配置
找到对应的Vagrantfile文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b0n85cHf-1692790960310)(https://fynotefile.oss-cn-zhangjiakou.aliyuncs.com/fynote/1462/1637300624000/25b4a2e9348d4ae9ac3877622e8fa450.png)]
查看当前主机给虚拟机分配的网关的网段
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0qYnHB8M-1692790960311)(https://fynotefile.oss-cn-zhangjiakou.aliyuncs.com/fynote/1462/1637300624000/230b6b4a1d444f9aa16a917fddc6d699.png)]
所以修改后的ip为192.168.56.10
重启测试需要提供私钥 私钥地址 搞定
2.Docker环境
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-imAgYNYo-1692790960311)(https://fynotefile.oss-cn-zhangjiakou.aliyuncs.com/fynote/1462/1637300624000/e8d466d356aa44f9aa921cd47847fda6.png)]
参考官方文档安装https://docs.docker.com/engine/install/centos/
卸载原有的环境 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine安装对应的依赖环境和镜像地址 sudo yum install -y yum-utilssudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo安装过慢设置镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo直接安装docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io启动docker服务
sudo systemctl start docker查看docker的版本
sudo docker version补充通过官方的镜像地址下载docker会比较慢
配置阿里云的镜像地址
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum更新下即可
yum makecache fast开机启动docker
sudo systemctl enable docker3.基本软件安装
3.1 MySQL数据库安装
项目软件统一安装在 /mydata 目录下
docker拉取镜像命令
docker pull mysql:5.7docker安装MySQL命令
docker run -p 3306:3306 --privilegedtrue --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORDroot -d mysql:5.7修改MySQL的配置文件 vim /mydata/mysql/conf/my.cnf
[client]
default-character-setutf8[mysql]
default-character-setutf8[mysqld]
init_connectSET collation_connection utf8_unicode_ci
init_connectSET NAMES utf8
character-set-serverutf8
collation-serverutf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve3.2 Redis安装
拉取Redis最新版本镜像
docker pull redis先创建对应的Redis的映射配置文件
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf创建容器命令
docker run -d -p 6379:6379 --name mall-redis -v /mydata/redis/data:/data -v /mydata/redis/conf:/etc/redis redis redis-server /etc/redis/redis.conf启动后测试连接
[rootmanager-node conf]# docker exec -it 4e redis-cli
127.0.0.1:6379 keys *
(empty array)
127.0.0.1:6379 设置容器自启动
[rootlocalhost ~]# docker update --restartalways mysql
mysql
[rootlocalhost ~]# docker update --restartalways mall-redis
mall-redis
5.微服务环境
在SpringCloud出现之前微服务架构我们也能够解决。但是选择五花八门比较乱针对这种情况SpringCloud整合一套微服务的解决方案。
SpringCloud生态提供了快速构建微服务的技术组件。https://spring.io/projects/spring-cloud-netflix 版本 关键词描述
SR (发行版)RC (后续发行版本)M1/M2PRE 里程碑GA 稳定版BUILD-XXX 开发版
SpringCloud和SpringBoot的关联关系
大版本对应
Spring CloudSpring BootAngel版本兼容Spring Boot 1.2.xBrixton版本兼容Spring Boot 1.3.x也兼容Spring Boot 1.4.xCamden版本兼容Spring Boot 1.4.x也兼容Spring Boot 1.5.xDalston版本、Edgware版本兼容Spring Boot 1.5.x不兼容Spring Boot 2.0.xFinchley版本兼容Spring Boot 2.0.x不兼容Spring Boot 1.5.xGreenwich版本兼容Spring Boot 2.1.xHoxtonl版本兼容Spring Boot 2.2.x
在实际开发过程中我们需要更详细的版本对应
Spring BootSpring Cloud1.5.2.RELEASEDalston.RC11.5.9.RELEASEEdgware.RELEASE2.0.2.RELEASEFinchley.BUILD-SNAPSHOT2.0.3.RELEASEFinchley.RELEASE2.1.0.RELEASE-2.1.14.RELEASEGreenwich.SR52.2.0.M4Hoxton.SR4
SpringCloud版本是和SpringBoot有关联关系的官网中可以查看https://docs.spring.io/spring-cloud/docs/current/reference/html/
5.1 SpringCloudAlibaba介绍
SpringCloudAlibaba GitHub地址https://github.com/alibaba/spring-cloud-alibaba/
中文网站对应的地址https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
注册中心Nacos配置中心Nacos负载均衡Ribbon声明式服务调用OpenFegin服务容错Sentinel网关服务Gateway链路监控Sleuth分布式事务Seata
SpringCloudAlibaba和SpringBoot的对应版本 针对于SpringCloudAlibaba的版本关系我们需要调整SpringBoot和SpringCloud的版本 然后我们在commons服务中设置SpringCloudAlibaba的依赖管理
dependencyManagementdependenciesdependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2021.1/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement5.2 Nacos注册中心
5.2.1 Nacos服务搭建
我们首先在Nacos的GitHub中下载相关的安装文件。https://github.com/alibaba/nacos/releases 但是因为服务器在国外所以我们直接给大家提供了对应的安装文件。直接解压缩到非中文的目录下然后启动即可 服务访问的地址是http://localhost:8848/nacos 5.2.2 Nacos服务注册
引入相关的依赖文件 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency
放开注册中心:EnableDiscoveryClient
// 放开注册中心
EnableDiscoveryClient
SpringBootApplication
// 指定Mapper接口对应的路径
MapperScan(com.msb.mall.product.dao)
public class MallProducetApplication {public static void main(String[] args) {SpringApplication.run(MallProducetApplication.class, args);}}然后需要在配置问中配置注册中心的相关信息 然后重启服务我们就可以在注册中心中发现对应的服务注册信息了 那么安装相同的步骤完成其他几个微服务的注册 5.2.3 Nacos容器中安装
为了使用的方便我们将Nacos安装到Docker容器中
首先我们需要拉取对应的镜像文件
docker pull nacos/nacos-server:1.4.2通过镜像文件运行nacos容器
docker run -d --env MODEstandalone --name nacos -v /mydata/nacos/conf:/home/nacos/conf -p 8848:8848 nacos/nacos-server:1.4.2安装中如果出现了如下的提示 那么就把windows中的安装文件中的conf目录的文件上传到虚拟机中 服务启动时间比较长耐心等待一会
启动容器后测试访问
http://192.168.56.100:8848/nacos 默认的账号密码nacos nacos 设置nacos服务自启动
docker update --restartalways nacos然后将众多的微服务的注册中心地址修改为docker容器中的注册中心地址 看到注册信息就表示操作成功了 5.3 OpenFegin服务调用
OpenFegin是一个声明式的服务调用组件。本质上是封装的Ribbon实现的。 5.3.1 商品服务定义接口
我们在商品服务中定义一个对外提供功能的接口 5.3.2 订单服务中调用
我们在订单服务中集成OpenFegin完成对应的商品服务调用
引入相关的依赖
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependency然后创建对应的Fegin接口
/*** FeignClient 指明我们要从注册中心中发现的服务的名称*/
FeignClient(name mall-product)
public interface ProductService {/*** 需要访问的远程方法* return*/GetMapping(/product/brand/all)public R queryAllBrand();
}还需要在启动类中开启远程调用
/*** basePackages 制定Fegin接口的路径*/
EnableFeignClients(basePackages com.msb.mall.order.fegin)
EnableDiscoveryClient
SpringBootApplication
MapperScan(com.msb.mall.order.dao)
public class MallOrderApplication {public static void main(String[] args) {SpringApplication.run(MallOrderApplication.class, args);}}然后在Order的控制期中完成商品服务的调用 AutowiredProductService productService;GetMapping(/products)public R queryProduct(){// OpenFegin 远程调用服务return R.ok().put(products,productService.queryAllBrand());}启动服务报错 然后就把相关的依赖添加上就可以了 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency5.4 Nacos配置中心
5.4.1 配置中心的基本使用
首先添加对应的依赖,因为其他的微服务也需要向配置中心中获取配置信息所以对应的依赖我们添加在了commons模块中 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactIdversion3.0.3/version/dependency创建bootsrap.properties文件这个文件会优先于application.yml文件加载
spring.application.namemall-order
spring.cloud.nacos.config.server-addr192.168.56.100:8848在nacos服务中创建对应的数据集名称是应用名称.properties mall-order.properties 通过RefreshScope来动态的刷新配置数据注解的位置写在Controller中 最后我们通过Value(“#{}”) 来获取配置中心中的数据配置中心的数据优先于application.yml中的属性信息 5.4.2 命名空间和配置分组
我们在Nacos配置中心中是通过命名空间和配置分组来管理我们众多的配置信息
首先我们通过命名空间来隔离服务给每一个服务创建一个对应的命名空间 在对应的命名空间下创建对应的配置文件 默认使用的public命名空间如果要使用特定的命名空间的话我们需要在bootstrap.properties中显示的指定使用的命名空间 如果我们需要加载对应的配置组中的信息那么同样的需要在bootstrap.properties中设置对应的配置组信息 然后通过配置分组来区分不同的开发环境【开发环境dev,测试环境test生产环境prod】
也就在具体的命名空间下我们创建的多个环境对应的配置文件 5.4.3 配置拆分
我们现在是将某个服务中的所有的配置都写在了同一个配置文件中。为了方便管理我们可以将配置信息拆分到配置中心中。
我们可以将配置文件中的数据源mybatis的配置信息以及其他的信息拆分开来 然后在bootstrap.properties中的指定 spring.application.namemall-order
spring.cloud.nacos.config.server-addr192.168.56.100:8848
# 指定使用的命名空间
spring.cloud.nacos.config.namespace638a5c2f-488f-4fa4-b7d3-1533d772e715
# 指定对应的配置组
spring.cloud.nacos.config.groupprod# 配置多个配置集
spring.cloud.nacos.config.ext-config[0].data-idmybats.yml
spring.cloud.nacos.config.ext-config[0].groupprod
spring.cloud.nacos.config.ext-config[0].refreshfalsespring.cloud.nacos.config.ext-config[1].data-iddatasourc.yml
spring.cloud.nacos.config.ext-config[1].groupprod
spring.cloud.nacos.config.ext-config[1].refreshfalsespring.cloud.nacos.config.ext-config[2].data-idother.yml
spring.cloud.nacos.config.ext-config[2].groupprod
spring.cloud.nacos.config.ext-config[2].refreshfalse5.5 网关Gateway
5.5.1 网关基本介绍 在微服务架构里服务的粒度被进一步细分各个业务服务可以被独立的设计、开发、测试、部署和管理。这时各个独立部署单元可以用不同的开发测试团队维护可以使用不同的编程语言和技术平台进行设计这就要求必须使用一种语言和平台无关的服务协议作为各个单元间的通讯方式。 本系统中我们选择的是Gateway作为我们的网关组件Spring Cloud Gateway是Spring官方基于Spring 5.0Spring Boot 2.0和Project Reactor等技术开发的网关Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关目标是替代ZUUL其不仅提供统一的路由方式并且基于Filter链的方式提供了网关基本的功能例如安全监控/埋点和限流等。 网关有几个非常重要的概念
Route(路由)这是网关的基本构建块它由一个ID一个目标URI一组断言和一组过滤器定义如果断言为真则路由匹配Predicate(断言):是Java8中提供的函数式接口用来判断是否路由匹配的Filter(过滤器):对断言匹配的请求和响应进行修改处理 5.5.2 网关应用
创建网关API服务修改SpringBoot和SpringCloud相关版本和其他的微服务保持一致。
然后添加对应的依赖 dependencygroupIdcom.msb.mall/groupIdartifactIdmall-commons/artifactIdversion0.0.1-SNAPSHOT/version/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency因为网关服务路由的时候需要去注册中心中发现相关的服务所以需要完成Nacos注册中心的配置
# 注册中心的配置
spring.application.namemall-gateway
spring.cloud.nacos.discovery.server-addr192.168.56.100:8848# 指定注册中心的服务端口
server.port8070放开注解 同样的网关中的相关配置我们也需要添加到Nacos的配置中心中所以也需要整合Nacos配置中心 然后我们测试路由规则是否可行
spring:application:name: mall-gatewaycloud:nacos:discovery:server-addr: 192.168.56.100:8848gateway:routes: - id: route1uri: http://www.baidu.compredicates:- Queryurl,baidu- id: route2uri: http://www.jd.compredicates: - Queryurl,jd启动时候因为依赖的commons服务中有MyBatis的依赖那么在网关API服务中也需要数据源的相关配置那么没有就抛异常这时我们可以在启动类的SpringBootApplication注解中排除DataSourceAutoConfiguration的自动注入。 然后根据对应的路由规则测试即可
http://localhost:8070/?urlbaidu
http://localhost:8070/?urljd