疯狂创客圈 Java 高并发【 亿级流量聊天室实战】实战系列 【博客园总入口

架构师成长+面试必备之 高并发基础书籍 【Netty Zookeeper Redis 高并发实战


前言

Crazy-SpringCloud 微服务脚手架 &视频介绍

Crazy-SpringCloud 微服务脚手架,是为 Java 微服务开发 入门者 准备的 学习和开发脚手架。并配有一系列的使用教程和视频,大致如下:

高并发 环境搭建 图文教程和演示视频,陆续上线:

中间件 链接地址
Linux Redis 安装(带视频) Linux Redis 安装(带视频)
Linux Zookeeper 安装(带视频) Linux Zookeeper 安装, 带视频
Windows Redis 安装(带视频) Windows Redis 安装(带视频)
RabbitMQ 离线安装(带视频) RabbitMQ 离线安装(带视频)
ElasticSearch 安装, 带视频 ElasticSearch 安装, 带视频
Nacos 安装(带视频) Nacos 安装(带视频)

Crazy-SpringCloud 微服务脚手架 图文教程和演示视频,陆续上线:

组件 链接地址
Eureka Eureka 入门,带视频
SpringCloud Config springcloud Config 入门,带视频
spring security spring security 原理+实战
Spring Session SpringSession 独立使用
分布式 session 基础 RedisSession (自定义)
重点: springcloud 开发脚手架 springcloud 开发脚手架
SpingSecurity + SpringSession 死磕 (写作中) SpingSecurity + SpringSession 死磕

小视频以及所需工具的百度网盘链接,请参见 疯狂创客圈 高并发社群 博客

1 Config 配置中心简介

在分布式微服务架构系统中,由于服务数量巨多,为了方便服务配置文件统一管理,所以需要分布式配置中心组件。如果各个服务的配置分散管理,则,上线之后配置的如何保持一致会是一个很头疼的问题。

所以,各个服务的配置定然需要集中管理。SpringCloud Config 配置中心是一个比较好的解决方案。使用SpringCloud Config配置中心,涉及到两个部分:

(1)config-server 服务端配置;

(2)config-client 客户端配置。

2 config-server 服务端配置

通过SpringCloud 构建一个 config-server 服务,大致需要三步。首先,在pom.xml中引入spring-cloud-config-server 依赖,大致如下:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>

其次,在所创建的 SpringBoot的程序主类上,添加@EnableConfigServer注解,开启Config Server 服务,代码如下:


package com.crazymaker.cloud.center.config; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication
@EnableConfigServer //开启配置服务器的支持
@EnableEurekaClient // 开启 Eureka 客户端的支持
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}

第三步,设置属性文件的位置。SpringCloud Config 提供本地存储配置的方式。在bootstrap启动属性文件中,设置属性 spring.profiles.active=native,并且设置属性文件所在的位置,大致如下:

server:
port: 7788 #配置中心端口
spring:
application:
name: config-server # 服务名称
profiles:
active: native # 设置读取本地配置文件
cloud:
config:
server:
native:
searchLocations: classpath:config/ #申明本地配置文件的存放位置

配置说明:

(1)spring.profiles.active=native,表示读取本地配置,而不是从git读取配置。

(2)search-locations=classpath:config/ 表示查找文件的路径,在类路径的config下。

服务端的配置规则:在配置路径下,以 {label}/{application}-{profile}.properties 的命令规范,放置对应的配置文件。上面实例,放置了以下配置文件:

/dev/crazymaker-common.yml
/dev/crazymaker-db.yml
/dev/crazymaker-redis.yml

分别对通用配置common、数据库配置db、缓存配置的相关属性,进行设置。Config 配置中心启动之后,使用 http:// ${CONFIG-HOST}: ${CONFIG-PORT}/{application}/{profile}[/{label}] 的地址格式,可以直接访问所加载好的配置属性。

例如,访问示例中的 http://192.168.233.128:7788/crazymaker/redis/dev 地址,返回的配置信息如下图所示。

特别说明

SpringCloud config-server 支持有多种配置方式,比如 Git,native,SVN 等。

虽然官方建议使用Git方式进行配置,这里没有重点介绍 Git方式,而是使用本地文件的方式,有三个原因:

(1) 对于学习或者一般的开发来说,本地的文件的配置方式更简化;

(2) 生产环境建议使用 Nacos,集成注册中心和配置中心,更加方便和简单;

(3) 掌握了native的配置方式之后,Git 的配置方法能触类旁通,因为思维上是趋同的。

config-client 客户端配置

客户端 config-client 同 config-server 一样,需要新增 spring-cloud-starter-eureka 的依赖用来注册服务。然后增加 spring-cloud-starter-config 依赖 ,引入配置相关的 jar 包。

<dependencies>
//….
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>

在bootstrap.properties中,按如下规则,增加客户端配置的映射规则:

spring.cloud.config.label:dev   #对应服务器端规则中的{label}部分。
spring.application.name:crazymaker #对应服务器端规则中的{application}部分。
spring.cloud.config.profile:redis #对应服务器端规则中的{profile}部分。
spring.cloud.config.uri:http://${CONFIG-HOST}:7788/ #配置中心 config-server 的独立uri地址。

如果是和Eureka的客户端配合使用,建议开启配置服务的自动发现机制,则使用如下配置:

spring.cloud.config.discovery.enabled: true
spring.cloud.config.discovery.service-id: config-server

配置中心的两种发现机制,不能同时存在,二者选其一即可。

有关客户端 config 属性加载的相关配置,必须配置在 bootstrap.properties (或bootstrap.yml)中,config 部分内容才能被正确加载。原因是:config 的相关配置会先于application.properties,而 bootstrap.properties 的加载也是先于 application.properties的。

使用环境变量确保安全

下面是本演示实例所用到的环境变量:

export DB_HOST=192.168.233.128
export REDIS_HOST=192.168.233.128
export EUREKA_ZONE_HOST=192.168.233.128
export RABBITMQ_HOST=192.168.233.128
export ZOOKEEPER_HOSTS=192.168.233.128

这些环境变量,包含 Eureka、Redis、RabbitMq 等服务器的IP地址。如果在bootstrap.yml中要对 Eureka 进行配置,可以使用环境变量 EUREKA_ZONE_HOST ,具体如下:

eureka:
client:
serviceUrl:
defaultZone: http://${EUREKA_ZONE_HOST:localhost}:7777/eureka/

上面的写法,通过${EUREKA_ZONE_HOST} 表达式去获取Eureka的IP地址。并且,环境变量后面跟着一个冒号和一个默认值,表示如果当前系统环境变量中 EUREKA_ZONE_HOST 为空时,就会使用默认值 localhost 来填充了。

总之,通过环境变量的使用,使得各种服务器的主机切换,多了一层灵活性。而且,可以做到不用明文编码一些密码之类的敏感信息,多了一层安全性。

部署和视频

首先需要本地测试通过。

(1)打包:

maven 打包工具。

(2)部署:

部署到linux服务器,解压缩,然后 start.sh 脚本启动。

(3) 访问

http://192.168.233.128:7788/crazymaker/redis/dev

(4) 视频示意(具体视频,请参见 博客园 总入口

具体,请关注 Java 高并发研习社群博客园 总入口


最后,介绍一下疯狂创客圈:疯狂创客圈,一个Java 高并发研习社群博客园 总入口

疯狂创客圈,倾力推出:面试必备 + 面试必备 + 面试必备 的基础原理+实战 书籍 《Netty Zookeeper Redis 高并发实战


疯狂创客圈 Java 死磕系列

  • Java (Netty) 聊天程序【 亿级流量】实战 开源项目实战

springcloud Config 入门,带视频的更多相关文章

  1. Eureka 入门,带视频

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 前言 Crazy ...

  2. Zuul 详解,带视频

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 前言 Crazy ...

  3. 带你入门SpringCloud统一配置 | SpringCloud Config

    前言 在微服务中众多服务的配置必然会出现相同的配置,如果配置发生变化需要修改,一个个去修改然后重启项目的方案是绝对不可取的.而 SpringCloud Config 就是一个可以帮助你实现统一配置选择 ...

  4. SpringCloud的入门学习之概念理解、Config配置中心

    1.SpringCloud Config分布式配置中心.分布式系统面临的配置问题. 答:微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务.由于每个 ...

  5. DTSE Tech Talk | 第10期:云会议带你入门音视频世界

    摘要:本期直播主题是<云会议带你入门音视频世界>,华为云媒体服务产品部资深专家金云飞,与开发者们交流华为云会议在实时音视频行业中的集成应用,帮助开发者更好的理解华为云会议及其开放能力. 本 ...

  6. springcloud情操陶冶-springcloud config server(一)

    承接前文springcloud情操陶冶-springcloud context(二),本文将在前文基础上浅析下ConfigServer的工作原理 前话 根据前文得知,bootstrapContext引 ...

  7. springcloud-知识点总结(三):Hystrix & Dashboard & turbine & Zuul & SpringCloud Config

    1.Hystrix断路器简介 Hystrix断路器简介 hystrix对应的中文名字是“豪猪”,豪猪周身长满了刺,能保护自己不受天敌的伤害,代表了一种防御机制,这与hystrix本身的功能不谋而合,因 ...

  8. 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)

    [原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...

  9. ElasticSearch 安装, 带视频

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并 ...

随机推荐

  1. 5、Docker 核心原理-资源隔离和限制

    Docker 资源隔离 Docker 是利用linux的LXC技术,内核的Kernel namespace Namespace: PID - 通过PID的namespace隔离,可以嵌套 NET - ...

  2. python脚本-简单读取有效python代码量

    import os count=[0,0] paths=[] file_count=[0] def sum_code(path): if os.path.isfile(path): one_file( ...

  3. For input string:"name"

    今天写项目的时候遇到了For input string:"name"这个错误,在控制台看报错信息好像是在说类型格式转换错误, 可是我并没有转换格式,这个name是我在jsp页面中使 ...

  4. php 设置临时内存和超时设置脚本最大执行时间

    ini_set('memory_limit','3072M'); // 临时设置最大内存占用为3G set_time_limit(0); // 设置脚本最大执行时间 为0 永不过期

  5. PTA 1140 1141 1142 1143

    1140 Look-and-say Sequence 思路:模拟 #include<bits/stdc++.h> using namespace std; typedef long lon ...

  6. svn+apache搭建版本控制服务器

    Centos7(linux)搭建版本控制服务器(svn+apache) 1.简介: 版本控制服务器: 版本控制(Revision control)是一种软体工程技巧,籍以在开发的过程中,确保由不同人所 ...

  7. MyBatis开发Dao的原始Dao开发和Mapper动态代理开发

    目录 咳咳...初学者看文字(Mapper接口开发四个规范)属实有点费劲,博主我就废了点劲做了如下图,方便理解: 原始Dao开发方式 1. 编写映射文件 3.编写Dao实现类 4.编写Dao测试 Ma ...

  8. 洛谷 P1920 成功密码 题解

    这是蒟蒻的第一篇题解,(之前的都没过,估计这篇也过不了 回到正题 这题,本蒟蒻第一眼看到以后,就决定咦,这不是模拟吗? 看到世界范围,嗯,打扰了. 扯回正题 首先,暴力肯定是A不了的(至少我A不了 但 ...

  9. Linux下基于Docker部署.Net Core web api项目

    Docker的好处我就不说啦,问问度娘就知道了

  10. Spring Security OAuth2 Demo —— 隐式授权模式(Implicit)

    本文可以转载,但请注明出处https://www.cnblogs.com/hellxz/p/oauth2_impilit_pattern.html 写在前面 在文章OAuth 2.0 概念及授权流程梳 ...