java 架构根据服务发现(如 consul、eureka、zookeeper)、服务网格(如 istio、linkerd)、分布式配置管理(如 spring cloud config、consul kv、zookeeper)和分布式数据库(如 mysql cluster、mongodb)等机制来面对分布式架构引入的分布式难题。比如,consul 用以服务发现,spring cloud config 用以分布式配置管理。
Java 架构怎么看待分布式架构引入的分布式难题
分布式架构的兴起增添了分布式架构的考验,Java 架构通过一些体制来应对这些问题。
服务发现
Consul: Consul 提供帮助发觉、存储和配置管理。 Eureka: Eureka 给予分布式服务发现并故障恢复。 ZooKeeper: ZooKeeper 是一个分布式融洽服务,适合于服务发现。服务网格
Istio: Istio 提供了一个服务网格,用以管理微服务的通讯、安全性、监控等。 Linkerd: Linkerd 也是一个服务网格,致力于服务中间的高效、靠谱通讯。分布式配置管理
Spring Cloud Config: Spring Cloud Config 给予分布式配置管理和版本控制。 Consul KV: Consul KV 是 Consul 中用于存储及管理键值对的工具。 Apache ZooKeeper: ZooKeeper 可用于存储和管理分布式配备。分布式数据库
分布式关系型数据库: 比如 MySQL Cluster、PostgreSQL Cluster、Oracle RAC。 分布式 NoSQL 数据库: 比如 MongoDB、Cassandra、Redis。实战案例
应用 Consul 开展服务发现
importcom.ecwid.consul.v1.ConsulClient;
importcom.ecwid.consul.v1.QueryParams;
importcom.ecwid.consul.v1.Response;
importcom.ecwid.consul.v1.health.model.HealthService;
publicclassConsulServiceDiscovery{
publicstaticvoidmain(String[]args)throwsException{
ConsulClient consulClient=newConsulClient();
//查看名叫 "my-service" 服务
QueryParamsqueryParams=newQueryParams("my-service");
Response>response= consulClient.getHealthServices("my-service",queryParams);
//获得服务实例目录
List services = response.getValue();
// 遍历服务实例
for (HealthService service : services) {
System.out.println(service.getService().getAddress());
System.out.println(service.getService().getPort());
}
}
}
应用 Spring Cloud Config 开展配置管理
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
以上就是Java 架构怎么看待分布式架构引入的分布式难题?的详细内容,大量请关注其他类似文章!