我们通过在eureka服务注册表中注册了多个实例来扩展我们系统中的所有服务.
此外,它们还由前面的zuul服务器代理.
我的问题是,当从客户端访问时,我们如何确保zuul代理的可伸缩性.
我能想到的一个解决方案是在eureka注册表中注册多个代理实例.但是,如果这样做,我们如何决定将哪些实例暴露给客户端.
我在我的应用程序中使用Spring boot 1.5.15。我添加了Redis作为缓存服务器的缓存支持,并使用 Spring Caching 注释来处理缓存操作。
使用 Spring Caching 和 Redis ,无法为我使用的每个缓存提供单独的过期时间。
因此,我自定义了 CacheManager bean,如下所示,并创建了一个配置类来获取我使用的各个缓存的 yaml 文件中的过期值。
@Bean
@RefreshScope
public CacheManager cacheManager() {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
cacheManager.setUsePrefix(true);
List<CacheConfig> cacheConfigList = appConfig.getCacheConfig();
if (null != cacheConfigList && cacheConfigList.size() > 0) {
cacheManager.setExpires(getCacheExpirySecondsMap(cacheConfigList));
}
return cacheManager;
}
public Map<String, Long> getCacheExpirySecondsMap(List<CacheConfig> cacheConfigList) {
Map<String, Long> cacheConfigMap = cacheConfigList.stream()
.collect(Collectors.toMap(x -> x.getName(), x -> x.getExpirySeconds()));
return cacheConfigMap;
}
Run Code Online (Sandbox Code Playgroud)
我的 CacheConfig bean 有以下字段,
String name;
Long expirySeconds;
Run Code Online (Sandbox Code Playgroud)
我的 …
redis spring-boot spring-cloud spring-boot-actuator spring-cloud-config
我们正在将 Apollo Graphql Server v1 项目迁移到 v2。
我们注意到错误响应格式发生了变化。
在 v2 中,响应中的错误列表包含在错误对象中。
但是,在 v1 中,情况并非如此。我们希望有一个一致的标准,并且不在 v2 中引入包装行为。
我了解 GraphQL 服务可能会通过扩展提供添加其他字段,如下面的链接所示。链接:https://graphql.github.io/graphql-spec/June2018/#sec-Errors
我已经测试了 Apollo GraphQL V2,这就是它的实现方式。
在 v1 中,它符合预期。
在 v1 中,我们看到错误响应如下,
{
"errors": [
{
"message": "Field \"announcement\" must not have a selection since type \"String\" has no subfields.",
"locations": [
{
"line": 2,
"column": 16
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
在 v2 中,我们看到错误响应如下,
{
"error": {
"errors": [
{
"message": "Field \"announcement\" must not have a selection since type \"String\" …Run Code Online (Sandbox Code Playgroud) 我正在春季缓存抽象注释,以将缓存应用于我的服务方法。
由于我将Redis用作缓存存储,因此我想使用在特定时间使缓存过期的选项,因为Redis支持该选项。Redis中的expireat命令可用于设置将来的到期时间。
我不确定使用RedisCache时如何对属于缓存的键进行操作。
我试图通过创建一个bean来定制RedisCacheManager。
我看到有一个暴露的getNativeCache()方法。但是我没有找到任何方法来设置使用它的expireat的值。
如果有一种自定义RedisCacheManager的方法,以便特定缓存的所有键在到期时使用同一时间,请告诉我。
我正在寻找一种方法,仅包含接收到我的服务的 JSON 请求中的某些字段,然后相应地记录它们,以避免记录太多数据。
要包含的字段和日志将在属性文件中配置。
由于我的服务使用 Spring Boot,Jackson JAR 应该已经可用。
由于请求 JSON 很复杂,包含嵌套数组和对象作为字段,因此我不确定我是否可以通过 Jackson 实现我的要求。
有没有办法使用 Jackson API 从输入请求 JSON 中仅提取某些字段及其值?
基本上,我正在研究两个用例。
1.从Json String中选择一个或多个元素(我打算通过配置传递),然后渲染它们
2.选择并更新一个或多个内联元素。我想在渲染元素之前屏蔽它们的值。
我提供了用于选择我使用的元素和 Json 的代码以及我期望的代码,如下所示。
public String getValues(String key,String jsonString){
String fieldNodeStr =null;
try {
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonString);
JsonNode fieldNode = node.at(key);
fieldNodeStr = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(fieldNode);
System.out.println(fieldNodeStr);
} catch (IOException e) {
System.out.println("IOException:",e);
}catch (Exception e) {
System.out.println("Exception:",e);
}
}
Run Code Online (Sandbox Code Playgroud)
我的 Json 如下,
{
"employeeId" : "5353",
"salesId" : "sales005",
"manager" : { …Run Code Online (Sandbox Code Playgroud) redis ×2
spring-boot ×2
spring-cloud ×2
graphql ×1
jackson ×1
json ×1
netflix-zuul ×1
node.js ×1
spring-cache ×1