我们可以通过RabbitMQ将Spring Cloud Config服务器的发布配置设置用于MicroServices节点。这个解决方案的缺点:

Spring Cloud Config仅支持GIT repo以保存配置

当配置服务器上的数据发生更改时,您需要手动将事件发送到所有MicroServices节点

让我们考虑另一个解决方案,如何删除Spring Config Server并将配置数据的分发替换为具有HazelCast数据网格的节点。

配置Hazelcast

首先你需要为Hazelcast添加maven依赖:( hazelcast-spring,因为我们将使用Spring缓存API和Hazelcast作为CACHE提供者)

com.hazelcast

hazelcast-spring

然后你需要配置Hazelcast,你有以下选择:

配置com.hazelcast.config.Config 或

将hazelcast.xml配置放到classpath中。请参阅此文档 或

如果您对hazelcast.xml名称不满意,请在文件中设置-Dhazelcast.config变量

我的配置看起来:

@Bean

public Config config() {

Config config = new Config();

config.setInstanceName("HazelcastService");

config.setProperty("hazelcast.wait.seconds.before.join","10");

config.getGroupConfig().setName("mygroup");

config.getGroupConfig().setPassword("mypassword");

config.getNetworkConfig().setPortAutoIncrement(true);

config.getNetworkConfig().setPort(10555);

config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(true);

SSLConfig sslConfig = new SSLConfig();

sslConfig.setEnabled(false);

config.getNetworkConfig().setSSLConfig(sslConfig);

return config;

}

始终使用Hazelcast群组。不要干涉他人。检查GroupConfig。

始终使用端口增量。有时某些环境中的端口可能会被占用。

如果您计划将Hazelcast用作分布式缓存,那么您需要使用Hazelcast实现覆盖cacheManager bean:

@Bean

HazelcastInstance hazelcastInstance(){

return Hazelcast.newHazelcastInstance(config());

}

@Bean

public CacheManager cacheManager(){

return new HazelcastCacheManager(hazelcastInstance());

}

带有HazelCast缓存的MicroServices

有以下Util服务:

package com.example.hazelcast;

import org.springframework.cache.annotation.Cacheable;

/**

* Created by tomas.kloucek on 18.1.2017.

*/public interface IHazelCastUtilService {

@Cacheable("batchSize")

int getBatchSize();

}

实现:

public class HazelCastUtilService implements IHazelCastUtilService {

@Override

public int getBatchSize() {

try {

System.out.println("Getting batch size from DAO...");

TimeUnit.SECONDS.sleep(5);// (1)} catch (InterruptedException e) {

e.printStackTrace();

}

return 3;

}

}

让我们在以下的上下文MicroServices之间共享此服务:

Cities MicroService:

@RestController

public class CitiesController {

final City[] cities = {

new City("Brno","Czech republic"),

new City("Bern","Switzeland"),

new City("Berlin","Germany"),

new City("London","England")

};

@Autowired

private IHazelCastUtilService hazelCastUtilService;

@RequestMapping("/cities")

public Cities getCities() {

final Cities result = new Cities();

System.out.println("...Getting city from controller!!...");

for (int i=0; i < hazelCastUtilService.getBatchSize();i++) {

result.getCities().add(cities[i]);

}

return result;

}

}

Persons MicroService:

@RestController

public class PersonsController {

@Autowired

private IHazelCastUtilService hazelCastUtilService;

final Person[] persons = {

new Person("Tomas","Kloucek","Programmer"),

new Person("Linus","Torvalds","Linux"),

new Person("Heinz","Kabutz","Java"),

new Person("Jonathan","Locke","Wicket")

};

@RequestMapping("/persons")

public Persons getPersons() {

final Persons result = new Persons();

System.out.println("...Getting person from controller!!...");

for (int i=0; i < hazelCastUtilService.getBatchSize();i++) {

result.getPersons().add(persons[i]);

}

return result;

}

}

测试演示:

git clone https://bitbucket.org/tomask79/microservice-spring-hazelcast-caching.gitmvn clean install (in the root folder with pom.xml)

cd spring-microservice-registry

java -jar target/registry-0.0.1-SNAPSHOT.war

verify that NetFlix Eureka is running at http://localhost:9761cd ..

cd spring-microservice-service1

java -jar target/service1-0.0.1-SNAPSHOT.war

verify at http://localhost:9761 that citiesService has been registeredcd ..

cd spring-microservice-service2

java -jar target/service2-0.0.1-SNAPSHOT.war

verify at http://localhost:9761 that personsService has been registered

为了确保两个 MicroServices形成Hazelcast集群,你需要看到类似的东西:

Members [2] {

Member [10.130.48.104]:10555 this

Member [10.130.48.104]:10556

}

看到下面输出:

...Getting city from controller!!...

Getting batch size from DAO...

...Getting person from controller!!...

因为之前已经由城市MicroService缓存了“batchSize”设置。太可爱了!

hazelcast 搭建_使用HazelCast实现Spring Config Server配置相关推荐

  1. hazelcast 搭建_SpringBoot整合Hazelcast实现分布式缓存

    原标题:SpringBoot整合Hazelcast实现分布式缓存 一. 分布式缓存代码实现步骤 1. 创建web项目 我们按照之前的经验,创建一个web程序,并将之改造成Spring Boot项目,具 ...

  2. 为Spring Cloud Config Server配置远程git仓库

    简介 虽然在开发过程,在本地创建git仓库操作起来非常方便,但是在实际项目应用中,多个项目组需要通过一个中心服务器来共享配置,所以Spring Cloud配置中心支持远程git仓库,以使分散的项目组更 ...

  3. hazelcast 使用_使用HazelCast进行Hibernate缓存:JPA缓存基础知识

    hazelcast 使用 HazelCast的最大功能之一就是对Hibernate第二级缓存的支持 . JPA具有两个级别的缓存. 一级缓存在事务期间缓存对象的状态. 通过两次查询相同的对象,您必须获 ...

  4. hazelcast 使用_使用Hazelcast发布和订阅

    hazelcast 使用 几周前,我写了一篇有关Hazelcast入门的博客,描述了创建分布式地图,列表和队列是多么简单. 当时我提到,Hazelcast还做很多其他事情. 该博客快速介绍了Hazel ...

  5. python 安卓app开发环境搭建_基于react-native的APP开发环境配置

    1. 首先要有jdk 版本1.8   环境变量必须要有    %JAVA_HOME%;%JAVA_HOME%\bin 2.python   版本2     必须是python2(官方文档这么写的,具体 ...

  6. 搭建spring config的坑 记录一下

    spring config搭建 新项目准备使用spring config统一配置,然后遇到搭建中的问题,对英文比较厉害的建议看下spring cloud config文档 可以解决99%的问题http ...

  7. springboot 获取application参数_(最新 9000 字 )Spring Boot 配置特性解析

    一.概述 目前Spring Boot版本: 2.3.4.RELEASE,这更新的速度也是嗖嗖的了,随着新版本的发布,也一步步针对公司基础组件进行了升级改造,其中很重要的一块就是配置文件的更新(虽然目前 ...

  8. Spring Boot – spring.config.name –案例研究

    当必须在不同配置中使用相同的应用程序代码时,外部化Spring Boot应用程序属性会很有用. 如果spring.config.location配置远离源代码(无论如何spring.config.lo ...

  9. spring boot 外部配置文件1-spring.config.location与spring.config.additional-location的区别

    spring boot外部配置文件 基础环境 : 基础环境 版本 spring boot 2.7.0 JDK 8 测试代码: @SpringBootApplication public class D ...

最新文章

  1. usaco Superprime Rib
  2. EUV光刻机全球出货量达57台
  3. 管理邮件用户(附图)---Michaelf
  4. LAMP平台部署及应用
  5. python中怎么创建配置文件_在Python中创建游戏配置/选项(config.cfg)文件
  6. 算法导论之概率分析和随机算法
  7. ios 发送请求时按home_iOS 10按下Home键能即响应返回桌面了
  8. oracle自带调优,oracle 参数调优
  9. python变量标识符_python中的变量和标识符
  10. 万恶的华为,落魄的爱立信
  11. 自适应采样次数的Ransac算法
  12. 网上商城APP系统源码 B2C商城系统源码
  13. 关于FAST迅捷FWR310无线路由器桥接移动光猫吉比特网关的问题
  14. 斐讯k2虚拟服务器设置,斐讯K2调配设置
  15. 关于后端接口测试没问题,HTTP500错误
  16. QQ浏览器X5内核问题汇总
  17. 高云fpga.Tang Nano 4k(GW1NSR-4C)呼吸灯
  18. MYSQL语句按中文拼音排序
  19. 互联网服务线上数据迁移的原则和方法
  20. 影响 Redis 性能的 5 大方面的潜在因素

热门文章

  1. 数字化转型企业人才画像
  2. 云原生背景下的运维价值思考与实践
  3. Typora 常用快捷键
  4. BZOJ2828 : 火柴游戏
  5. 中国队输球是有原因滴
  6. 利用filezilla下载文件,出现无法启动传输和严重文件错误
  7. 怀孕计算机在线,【怀孕天数计算器在线计算_怀孕天数计算器在线计算专题】- 天鹅到家...
  8. 【今日CV 计算机视觉论文速览 第133期】Wed, 19 Jun 2019
  9. 基于阿里云CentOS进行Docker尝试
  10. 怎么判断冠词用a还是an_如何判断单词前的冠词用a还是an