当前位置: 首页 > news >正文

做网站维护要什么专业重庆市场所码图片

做网站维护要什么专业,重庆市场所码图片,怎么自己做网站赚钱,wordpress数字商城模板下载1.什么是Atomix? Atomix是一个能用的Java框架,用来构建高可用的分布式系统。它是基于RAFT协议的实现,为用户提供了各种原子数据结构,比如map/set/integer等,这些数据结构都可以在整个集群中共享并保证一致性&#xff…

1.什么是Atomix?

Atomix是一个能用的Java框架,用来构建高可用的分布式系统。它是基于RAFT协议的实现,为用户提供了各种原子数据结构,比如map/set/integer等,这些数据结构都可以在整个集群中共享并保证一致性,同时也提供了LeaderElection的原子对象,用来注册候选主结点、监听相关事件等的功能。

大多数分布式应用都需要一些有状态的组件来实现一致性和容错性。Atomix是一个可嵌入的库,有助于实现分布式资源的容错和一致性。

它提供了一套丰富的API,用于管理其资源,如集合、组和并发的工具。

2.代码工程

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springboot-demo</artifactId><groupId>com.et</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>atomix</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><atomix.version>3.1.12</atomix.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>io.atomix</groupId><artifactId>atomix</artifactId><version>${atomix.version}</version></dependency><dependency><groupId>io.atomix</groupId><artifactId>atomix-raft</artifactId><version>${atomix.version}</version></dependency></dependencies>
</project>

建立集群

private static Atomix buildAtomix() {List<String> raftMembers = Collections.singletonList("node1");//创建atomixreturn Atomix.builder(AtomixCluster.class.getClassLoader()).withClusterId("my-cluster").withMemberId("node1").withHost("127.0.0.1").withPort(6789).withMembershipProvider(BootstrapDiscoveryProvider.builder().build()).withManagementGroup(RaftPartitionGroup.builder("system").withNumPartitions(1).withDataDirectory(new File(LOCAL_DATA_DIR, "system")).withMembers(raftMembers).build()).addPartitionGroup(RaftPartitionGroup.builder(groupName).withNumPartitions(raftMembers.size()).withDataDirectory(new File(LOCAL_DATA_DIR, "data")).withMembers(raftMembers).build()).build();
}

分布式Map存储

Atomix atomix = buildAtomix();
//atomix启动并加入集群
atomix.start().join();//创建atomixMap
AsyncAtomicMap<Object, Object> asyncAtomicMap = atomix.atomicMapBuilder("myCfgName").withProtocol(MultiRaftProtocol.builder(groupName).withRecoveryStrategy(Recovery.RECOVER).withMaxRetries(MAX_RETRIES).build()).withReadOnly(false).build().async();
//进行数据存储
asyncAtomicMap.put("HBLOG", "http://www.liuhaihua.cn");
//进行查询
CompletableFuture<Versioned<Object>> myBlog = asyncAtomicMap.get("HBLOG");
Versioned<Object> objectVersioned = myBlog.get();
System.out.printf("value:%s version:%s%n", objectVersioned.value(), objectVersioned.version());

选举

//Elector
AsyncLeaderElector leaderElector = atomix.leaderElectorBuilder("leader").withProtocol(MultiRaftProtocol.builder(groupName).withRecoveryStrategy(Recovery.RECOVER).withMaxRetries(MAX_RETRIES).withMaxTimeout(Duration.ofMillis(15000L)).build()).withReadOnly(false).build().async();
//获取出当前节点
Member localMember = atomix.getMembershipService().getLocalMember();
System.out.println("localMember:" + localMember.toString());
String topic = "this is a topic";
//根据某一topic选举出leader,返回的是选举为leader的节点
Leadership leadership = (Leadership) leaderElector.run(topic, localMember.toString()).get();
System.out.println("==========" + leadership);
//get leadership
Leadership topicLeadership = (Leadership) leaderElector.getLeadership(topic).get();
System.out.println("------------>" + topicLeadership);
//输出所有的topic对应的leader
Map topicLeadershipMaps = (Map) leaderElector.getLeaderships().get();
System.out.println("++++++++++++" + topicLeadershipMaps.toString());

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

  • https://github.com/Harries/springboot-demo

3.总结

atomix的api远不止本例中的两个,还有其他很多的api。如分布式锁、分布式事务、分布式自增id、分布式队列、分布式信息号等,这些在atomix中都有实现,详细可见atomix的类方法!更多关于atomix的相关介绍,可以在对应的github中找到: https://github.com/atomix/atomix-archive

需要注意的是:基于java的atomix现已停止维护,这里仅用作学习目的,在分布式系统中体验一下。

4.引用

  • Raft Consensus Algorithm
  • https://github.com/maemual/raft-zh_cn/blob/master/raft-zh_cn.md
  • Helm chart repository for Atomix | atomix
  • https://raft.github.io/raft.pdf
  • Java CompletableFuture 详解
http://www.yayakq.cn/news/156877/

相关文章:

  • 网站建设哪专业口碑宣传
  • wordpress 站内信国家企业信用信息网查询
  • 宝山网站建设服务线上推广方案怎么写
  • 无锡专业网站制作网站建设中 意思
  • 网站建设模板可用吗wordpress插件 一键登录
  • 使用vue做简单网站教程寻找东莞微信网站建设
  • 网站建设策划书编制微信公众平台微网站怎么做
  • 手机网站关键词排名查询网站的搭建流程
  • 郑州网站顾问热狗网vs2010网站开发示例
  • 免费企业网站源码生成wordpress 随机阅读数
  • 成绩分析智能网站怎么做外贸企业网站设计公司
  • 怎样做后端数据传输前端的网站网站建设艾瑞市场分析
  • 对接标准做好门户网站建设重庆企业网站推广代理
  • 厦门的企业网站网站建设分析魅族
  • 淮安市网站企业网站营销的实现方式
  • 网站建设证据保全wordpress答题跳转
  • 东莞模板网站设计wordpress 文章标题外链
  • 如何购买网站流量北京市建设工程发包承包交易中心网站
  • 特效素材免费下载网站详情页设计思路遵循哪五个营销环节
  • 做推广效果哪个网站好公司网站一般用什么软件做
  • 关于网站建设的广告语做网站环境配置遇到的问题
  • 万网网站建设选哪个好做摄影网站的公司
  • 加强检察门户网站建设情况南宁seo主管
  • 织梦做网站教程vps服务器怎么创建多个网站
  • 哈密建设集团有限责任公司网站扬州建设局网站
  • 网站建设包装策略大庆网站建设优化
  • 个人网站设计教程12123互联网服务平台
  • 淄博网站建设专家静安建设机械网站
  • 建设外卖网站规划书免费建网站广告语
  • 如何做购物网站的限购功能代码高校网站建设运维体系问题