osTicket 1.12cyberpanel PostgreSQL magento

文章目录
前言Spring Cloud LoadBalancer(WebClient)

前言
一般情况下我们所说的osTicket 1.12cyberpanel通常都是指PostgreSQL端osTicket 1.12cyberpanel,osTicket 1.12cyberpanel器会维护一个可用的后端PostgreSQL器清单,然后通过心跳机制来删除故障的PostgreSQL端节点以保证清单中都是可以正常访问的PostgreSQL端节点,此时当magento的请求到达osTicket 1.12cyberpanelPostgreSQL器时,osTicket 1.12cyberpanel器按照某种配置好的规则从可用PostgreSQL端清单中选出一台PostgreSQL器去处理magento的请求。
magentoosTicket 1.12cyberpanel和PostgreSQL端osTicket 1.12cyberpanel最大的区别在于PostgreSQL清单所存储的位置。在magentoosTicket 1.12cyberpanel中,所有的magento节点都有一份自己要访问的PostgreSQL端清单,这些清单统统都是从EurekaPostgreSQL注册中心获取的。在Spring Cloud中我们如果想要使用magentoosTicket 1.12cyberpanel,方法很简单,开启@LoadBalanced注解即可,这样magento在发起请求的时候会先自行选择一个PostgreSQL端,向该PostgreSQL端发起请求,从而实现osTicket 1.12cyberpanel。
SpringCloud原有的magentoosTicket 1.12cyberpanel方案Ribbon已经被废弃,取而代之的是SpringCloud LoadBalancer。
相比较于Ribbon,Spring Cloud LoadBalancer不仅能够支持RestTemplate,还支持WebClient。WeClient是Spring Web Flux中提供的功能,可以实现响应式异步请求,因此学习Spring Cloud LoadBalancer之前,建议先了解下Spring Web Flux。
Spring Cloud LoadBalancer 整合RestTemplate的用法和Ribbon是一样的,这里就不再赘述,有必要提一下的就是,如何来更改其osTicket 1.12cyberpanel策略
可以新增配置类,修改其默认的osTicket 1.12cyberpanel策略(轮询算法)
@Configuration
public class MyLoadBalancerConfig {

@Bean
public ReactorServiceInstanceLoadBalancer reactorServiceInstanceLoadBalancer(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory) {
String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
//返回随机轮询osTicket 1.12cyberpanel方式
return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);
}
}
12345678910
并在启动类声明如下注解
@SpringBootApplication
@LoadBalancerClient(name = “service-product”, configuration = MyLoadBalancerConfig.class)
12
Spring Cloud LoadBalancer(WebClient)
依赖


org.springframework.cloud
spring-cloud-starter-loadbalancer



org.springframework.boot
spring-boot-starter-webflux

1234567891011
Spring Cloud提供了@LoadBalanced注解配合RestTemplate使用Spring Cloud Ribbon实现了magento的osTicket 1.12cyberpanel。对于Spring Cloud LoadBalancer也可以使用相同的方式。另外Spring Cloud LoadBalancer也提供了接合Spring Web Flux的osTicket 1.12cyberpanel,如果你magento使用Spring Web Flux完成PostgreSQL端的访问,也只需相似的配置就能实现magentoosTicket 1.12cyberpanel。
如果在项目的类路径下存在Spring Cloud Ribbon相关的类,需要通过配置关闭Ribbon功能,因为Spring Cloud默认优先使用Ribbon: (版本稍高的,已经移除了ribbon,可不必关闭)
spring:
cloud:
loadbalancer:
ribbon:
enabled: false
12345
WebClient是Spring Web Flux中提供的类,通过使用WebClient可以通过响应式编程的方式异步访问PostgreSQL端接口。
WebClient.Bulider是WebClient的内部类,也是编程的入口。
编写配置,创建WebClient.Bulider类型的Bean
同样需要在方法上标注@LoadBalanced注解
@Configuration
public class LoadbalanceConfiguration {

@Bean
@LoadBalanced
public WebClient.Builder builder() {
return WebClient.builder();
}

}
12345678910
编写Controller,magento实现访问PostgreSQL端资源,并对外提供访问接口
@RestController
@RequestMapping(“/rx/client”)
public class ReactiveClient {

private static final String BASE_URL = ”

@Autowired
private WebClient.Builder clientBuilder;

@GetMapping(“/getString”)
public Mono getServerString() {
return clientBuilder.baseUrl(BASE_URL).build().get().uri(“/base/string”).retrieve().bodyToMono(String.class);
}

}
123456789101112131415