当前位置: 首页 > news >正文

杭州网站建设培训班/网络推广主要是做什么工作

杭州网站建设培训班,网络推广主要是做什么工作,网站开发建设项目服务清单,建设网站哪家强目录 介绍 架构 配置仓库: 配置中心: 客户端: 测试 刷新 介绍 在单机部署中,可能会出现一个或者多个的配置文件,比如开发环境以及生产环境,在这种情况下配置文件放在一起即可,如果是spr…

目录

介绍

架构

配置仓库:

配置中心:

客户端:

测试

刷新


介绍

在单机部署中,可能会出现一个或者多个的配置文件,比如开发环境以及生产环境,在这种情况下配置文件放在一起即可,如果是springboot程序,由它来指定profiles是不错的选择。

在集群或者分布式中,可能多个程序有着相同的配置文件,也可能每个程序有单独的配置文件,如何管理这些配置文件就是一个问题了,挨个去找去修改明显是不合适的。面对解决这种问题,springcloud为我们提供了配置中心。

本教程版本Greenwich.RELEASE

架构

大概像上面这图一样,需要有个配置仓库,放置一大堆配置文件,这个仓库可以是公网库,也可以是本地库(本地库如何能让所有的客户端都能访问是一个问题),一般都会使用公网git库。

流程一般是:客户端会先访问配置中心,配置中心告诉该客户端“你的配置文件在某个公网库里,网址是多少,叫什么什么名字,你去公网库拿去吧(这种说法不严谨,只表面粗浅流程)。

配置仓库:

我新建了一个仓库https://gitee.com/dmw000/spring-cloud

里面新建了一个config文件,文件夹下有三个配置文件。

 config-client-dev.properties

config-client-prod.properties

 config-client2-dev.properties

过多的不再解释。

配置中心:

pom文件如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.heping</groupId><artifactId>cloud</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version><relativePath /></parent><name>cloud</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencyManagement><dependencies><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Greenwich.SR1</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-config --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-config-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency></dependencies>
</project>

该pom文件继承了springboot.parent。同时引入了Greenwich版本的springcloud。又添加了config的依赖,由于我们这是配置中心服务器,所以又添加了confi-server的依赖。

启动类如下:

@SpringBootApplication
@EnableConfigServer
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}
}

该启动类与普通的spirngboot项目相比多了一个@EnableConfigServer注解,这个是必须的。

还有application.yml如下:

server: port: 8888
spring:application:name: config-servercloud:config:server:git:uri: https://gitee.com/dmw000/spring-cloudsearchPaths: /config

该yml做了下面的事情:

1.配置了端口为8888,等待客户端来访问。

2.配置了仓库服务器地址是https://gitee.com/dmw000/spring-cloud

3.配置文件在/config文件夹里。

客户端:

客户端的依赖,你需要把服务端依赖的spring-cloud-config-server去掉即可。这里为了好观察,需要启动springmvc,所有又加入了springbootstartweb这个依赖

客户端的配置文件就不能叫application.yml,而是bootstrap.yml,如下:

spring:application:name: config-clientcloud:config:label: masterprofile: devuri: http://localhost:8888/
server:port: 8881

做了下面这些事情:

1.给自己起名字叫 config-client

2.自己的配置指定了dev

3.配置中心是:http://localhost:8888/

4.自身端口是8881

启动类如下:

@RestController
@SpringBootApplication
public class App {@Value("${hello}")String hello;@RequestMapping("")public String hello(){return hello;}public static void main(String[] args) {SpringApplication.run(App.class, args);}
}

测试

我们先启动配置中心服务器,然后再启动客户端,访问localhost:8881就会发现返回的是git里config/config-client-dev.properties这个文件里配置好的值。

这样我们的客户端就可以访问到配置仓库里的配置文件了。

那么这究竟是怎么回事呢?

客户端会先去访问config.uri,找到配置中心服务器,从配置中心里了解到了配置文件都在https://gitee.com/dmw000/spring-cloud的config这个文件夹下

其次,每个客户端都有自己的名字,本例中客户端的名字叫做:config-client,而它指定的profile又叫dev。所以它读取解析https://gitee.com/dmw000/spring-cloud/config/config-client-dev.properties配置文件。(至于label,默认就是master分支)

这是springcloud的约定,它就是这样搞的,

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

我们此时可以让客户端指定profile=prod,再次均重启客户端访问,会发现访问了config-client-prod.properties了。

我们可以再开启一个客户端,指定application-name=config-client1,会发现其访问了config-client1-dev.properties

刷新

但这里有个问题,如果git更新了配置文件,我们必须重启服务器和客户端才能得到新的配置,有没有什么办法不重启就能使用新配置呢?

有的。

你需要做下面3件事情

1.客户端需要开启springboot端点监控,依赖里加入:

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

2.bootstrap.yml添加开放refresh端点:

spring:application:name: config-clientcloud:config:label: masterprofile: devuri: http://localhost:8888/
server:port: 8881
management:endpoints:web:exposure:include: refresh

3.在需要刷新的类上加入@RefreshScope注解,本例客户端的启动类里又是controller,所以直接在启动类上加入@RefreshScope即可。

然后当你修改了git的配置文件后,访问客户端的http://localhost:8881/actuator/refresh

这个url是会让本应用里所有加入@RefreshScope的类里的可刷新的部件都进行刷新。

执行刷新之后,再访问客户端,发现果然改变了。

这个需要主动请求。

有没有更为省事的呢?springboot里目前没有这个功能,不过你可以去做些事情,比如轮询执行/actuator/refresh?比如事件执行/actuator/refresh?。。

springboot里虽然没有智能刷新的功能,但是它可以接收webhook.

什么是webhook,webhook实际上就是git网站当发生改动时的一个钩子,可以往自己的服务器上进行推送,你可以在各大get网站设置webhoot。当有变动后通知自己的服务器,然后自己的服务器再执行刷新。

 

http://www.lbrq.cn/news/766927.html

相关文章:

  • 网站设置多少个关键词/百度平台官网
  • 用asp.net做购物网站/优化疫情政策
  • 做翻页电子书的网站/互动营销案例100
  • 安徽php网站建设/优化网站做什么的
  • 网购哪个网站好又便宜/百度一下官方网页
  • 太原网站建设哪家最好/淘宝店铺怎么免费推广
  • 衡水精品网站建设价格/网络广告类型
  • 网站建设功能需求/北京网站seo费用
  • 网站搭建者/网站查询备案信息
  • 做平面的素材网站/网络营销的手段有哪些
  • 温州做网站优化/高端企业网站定制公司
  • 上海徐汇网站建设公司/如何做免费网站推广
  • 网站标题作弊详解/推广网站的公司
  • 可以做样机图的网站/黄冈网站推广策略
  • 营销计划书/杭州网站seo外包
  • 深圳附近做个商城网站找哪家公司好/网站优化推广平台
  • 用php做网站的实训日志总结/2024年3月份病毒会爆发吗
  • 手机网站用什么软件/seo是什么岗位
  • 如何与导航网站做友情链接/seo发包排名软件
  • 网站自己做服务器划算吗/指数函数求导公式
  • 桂林网站开发m0773/网站建设的意义和作用
  • 动态网站开发工程师 asp/郑州seo外包v1
  • 如何做自己的网站表白/开发网站多少钱
  • 自己做的网站怎么调用百度地图/广州百度快速优化排名
  • 织梦 图片网站/百度搜索推广怎么做
  • 网站地图后缀/百度手机助手网页版
  • 做网站交互demo工具/品牌整合推广
  • 自己做网站翻译服务器 - 添加网站/关键词优化收费标准
  • 高新快速建设网站找哪家/自己创建网页
  • 做网站如何找客户/怎么创建自己的网站平台
  • OpenCV阈值处理详解
  • 模式设计:策略模式及其应用场景
  • nm命令和nm -D命令参数
  • 机器学习项目从零到一:加州房价预测模型(PART 3)
  • [AI React Web] E2B沙箱 | WebGPU | 组件树 | 智能重构 | 架构异味检测
  • Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索