hazelcast 搭建_使用HazelCast实现Spring Config Server配置
我们可以通过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配置相关推荐
- hazelcast 搭建_SpringBoot整合Hazelcast实现分布式缓存
原标题:SpringBoot整合Hazelcast实现分布式缓存 一. 分布式缓存代码实现步骤 1. 创建web项目 我们按照之前的经验,创建一个web程序,并将之改造成Spring Boot项目,具 ...
- 为Spring Cloud Config Server配置远程git仓库
简介 虽然在开发过程,在本地创建git仓库操作起来非常方便,但是在实际项目应用中,多个项目组需要通过一个中心服务器来共享配置,所以Spring Cloud配置中心支持远程git仓库,以使分散的项目组更 ...
- hazelcast 使用_使用HazelCast进行Hibernate缓存:JPA缓存基础知识
hazelcast 使用 HazelCast的最大功能之一就是对Hibernate第二级缓存的支持 . JPA具有两个级别的缓存. 一级缓存在事务期间缓存对象的状态. 通过两次查询相同的对象,您必须获 ...
- hazelcast 使用_使用Hazelcast发布和订阅
hazelcast 使用 几周前,我写了一篇有关Hazelcast入门的博客,描述了创建分布式地图,列表和队列是多么简单. 当时我提到,Hazelcast还做很多其他事情. 该博客快速介绍了Hazel ...
- python 安卓app开发环境搭建_基于react-native的APP开发环境配置
1. 首先要有jdk 版本1.8 环境变量必须要有 %JAVA_HOME%;%JAVA_HOME%\bin 2.python 版本2 必须是python2(官方文档这么写的,具体 ...
- 搭建spring config的坑 记录一下
spring config搭建 新项目准备使用spring config统一配置,然后遇到搭建中的问题,对英文比较厉害的建议看下spring cloud config文档 可以解决99%的问题http ...
- springboot 获取application参数_(最新 9000 字 )Spring Boot 配置特性解析
一.概述 目前Spring Boot版本: 2.3.4.RELEASE,这更新的速度也是嗖嗖的了,随着新版本的发布,也一步步针对公司基础组件进行了升级改造,其中很重要的一块就是配置文件的更新(虽然目前 ...
- Spring Boot – spring.config.name –案例研究
当必须在不同配置中使用相同的应用程序代码时,外部化Spring Boot应用程序属性会很有用. 如果spring.config.location配置远离源代码(无论如何spring.config.lo ...
- spring boot 外部配置文件1-spring.config.location与spring.config.additional-location的区别
spring boot外部配置文件 基础环境 : 基础环境 版本 spring boot 2.7.0 JDK 8 测试代码: @SpringBootApplication public class D ...
最新文章
- usaco Superprime Rib
- EUV光刻机全球出货量达57台
- 管理邮件用户(附图)---Michaelf
- LAMP平台部署及应用
- python中怎么创建配置文件_在Python中创建游戏配置/选项(config.cfg)文件
- 算法导论之概率分析和随机算法
- ios 发送请求时按home_iOS 10按下Home键能即响应返回桌面了
- oracle自带调优,oracle 参数调优
- python变量标识符_python中的变量和标识符
- 万恶的华为,落魄的爱立信
- 自适应采样次数的Ransac算法
- 网上商城APP系统源码 B2C商城系统源码
- 关于FAST迅捷FWR310无线路由器桥接移动光猫吉比特网关的问题
- 斐讯k2虚拟服务器设置,斐讯K2调配设置
- 关于后端接口测试没问题,HTTP500错误
- QQ浏览器X5内核问题汇总
- 高云fpga.Tang Nano 4k(GW1NSR-4C)呼吸灯
- MYSQL语句按中文拼音排序
- 互联网服务线上数据迁移的原则和方法
- 影响 Redis 性能的 5 大方面的潜在因素