hazelcast入门教程_Hazelcast入门指南第5部分

hazelcast入门教程

这是我撰写的有关Hazelcast的一系列文章的延续。 我强烈建议您阅读其他内容: 第1 部分 , 第2 部分 , 第3 部分和第4部分 。

一气呵成的东西

这篇文章中没有Hazelcast专用代码。 让我重复一遍。 这篇文章中没有Hazelcast专用代码。 这是因为Hazelcast的优秀人员生产的产品执行不同的标准。 这样可以选择客户。 Hazelcast实现的那些标准之一是内存缓存。

JCache呢?

JCache(JSR 107)仅用于Java。 Memcached协议客户端已跨多种语言实现,因此不能将其固定为一种语言。 在我看来,实施memcached协议是明智之举,因为它使Hazelcast不仅仅是“ Java事物”。

为什么要使用Hazelcast?

很好的问题! 如果可以使用任何 Memcached服务器,为什么要使用Hazelcast。 好吧,说实话,除非一个人在多台服务器之间共享一个数据库,否则甚至可能不需要缓存! 如果确实需要缓存解决方案,这就是为什么我会选择Hazelcast的原因:

  1. 自动实时备份–我没有读过至少一次没有备份过的一种Hazelcast数据类型。 只需站起来两个实例,一个实例从另一个实例中脱机,即可获得全部收益。
  2. 安全性–如果需要缓存的服务器位于不同的网络中,那么使用Hazelcast可以更轻松地制定防火墙规则。 假设有n台服务器需要缓存数据,其中n / 2台位于192.168.1.x网络上,而其他n / 2则在10.10.1.x网络上。 通过在任一网络上设置一个Hazelcast实例,所有n台计算机都可以共享一个缓存。 Hazelcast实例可以配置为仅与另一侧的实例进行对话。 这使得防火墙规则编写器的工作更加容易,因为只需要为两个服务器而不是n台计算机制定一条规则,然后192.168.1.x机器就可以与其Hazelcast节点通信,而10.10.1.x机器就可以与其网络通信。 Hazelcast节点,并让Hazelcast实例完成其余工作。

我从不喜欢仅显示“嗡嗡”的示例,因此我将展示Java客户端如何与Python客户端共享数据。

建立

我正在使用Java 1.7和Python 3.4。 不幸的是,两种语言都没有开箱即用的内存缓存支持,所以我去寻找已经写好的客户端。

Java

我发现Spymemcached for Java。 我只是略述其能力的表面。 可以从Maven中获取。 这是项目的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"><modelVersion>4.0.0</modelVersion><groupId>com.darylmathison</groupId><artifactId>Memcache</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><properties><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties><build><plugin><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><showDeprecation>true</showDeprecation></configuration></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>1.3.2</version><executions><execution><goals><goal>java</goal></goals></execution></executions><configuration><mainClass>com.darylmathison.memcache.Main</mainClass></configuration></plugin></plugins></build><dependencies><dependency><groupId>net.spy</groupId><artifactId>spymemcached</artifactId><version>2.11.5</version></dependency></dependencies></project><dependency><groupId>org.apache.camel</groupId><artifactId>camel-servlet</artifactId></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-metrics</artifactId></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-swagger</artifactId></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-jackson</artifactId></dependency>

Python

接下来,我找到了适用于Python的python3-memcached 。 它使用经典的setup.py过程进行安装。

服务器

如果服务器丢失,则没有太多的缓存。 人们可以在下载Hazelcast hazelcast.org/download根据自己的操作系统,内容,CD提取到的bin目录并运行server.bat或服务器脚本。 随着设置服务器的进行,这是我做过的最简单的事情。

情况

我试图使价格更便宜的“昂贵”操作是斐波那契数。 由于Python和Java都可以理解unicode,因此将值存储为unicode字符串。 密钥是一个unicode字符串,其中包含序列号或到达该序列所需的轮数。

Java

package com.darylmathison.memcache;import java.io.IOException;
import java.net.InetSocketAddress;
import net.spy.memcached.MemcachedClient;/**** @author Daryl*/
public class Main {/*** @param args the command line arguments*/public static void main(String[] args) {try {MemcachedClient client = new MemcachedClient(new InetSocketAddress("localhost", 5701));for(int i = 2; i < 20; i++) {System.out.println("value of round " + i + " is " + fibonacci(i, client));}client.shutdown();} catch(IOException ioe) {ioe.printStackTrace();}}private static long fibonacci(int rounds, MemcachedClient client) {String cached = (String)client.get(String.valueOf(rounds));if(cached != null) {System.out.print("cached ");return Long.parseLong(cached);}long[] lastTwo = new long[] {1, 1};for(int i = 0; i < rounds; i++) {long last = lastTwo[1];lastTwo[1] = lastTwo[0] + lastTwo[1];lastTwo[0] = last;}client.set(String.valueOf(rounds), 360, String.valueOf(lastTwo[1]));return lastTwo[1];}
}

Python

这是Python客户端。 作为一名pythonian,我尝试成为尽可能的pythonic。

import memcacheclient = memcache.Client(['localhost:5701'])def fibonacci(round):f = [1, 1, 1]for i in range(round):f[-1] = sum(f[:2])f[0], f[1] = f[1], f[2]return f[2]def retrievefib(round):fib = client.get(str(round))if not fib:fib = fibonacci(round)client.set(str(round), str(fib))else:print("cached")return fibdef main():store = [ x for x in range(20) if x % 2 == 0]for i in store:retrievefib(i)for i in range(20):print(retrievefib(i))if __name__ == "__main__":main()

结论

好吧,这是Hazelcast作为幕后力量的例子。 我认为这是最耀眼的地方。 无需创建全新的,巧妙的分布式应用程序即可利用Hazelcast。 所有要做的就是使用已知的做法,并让Hazelcast进行艰苦的工作。 这个岗位的来源,可以发现这里的Java代码,并在这里为Python代码。

参考资料

  • http://en.wikipedia.org/wiki/Fibonacci_number
  • https://code.google.com/p/spymemcached/
  • https://pypi.python.org/pypi/python3-memcached/1.51

翻译自: https://www.javacodegeeks.com/2014/12/the-beginners-guide-to-hazelcast-part-5.html

hazelcast入门教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机C语言编程:.H文件与.C文件的关系!

一个.C文件对应一个.H文件是一种良好的编程习惯&#xff0c;那么.C和.H文件之间的关系是怎么样的呢&#xff1f;一、.H文件与.C文件的关系&#xff1a;迄今为止&#xff0c;写过的程序都是一些很简单的程序&#xff0c;从来没有想到要自己写.H文件&#xff0c;也不知道.H文件到…

python编程快速上手-----让繁琐工作自动化_Python编程快速上手让繁琐工作自动化--逗号代码和字符图网格...

逗号代码假定有下面这样的列表&#xff1a;spam [apples, bananas, tofu, cats]编写一个函数&#xff0c;它以一个列表值作为参数&#xff0c;返回一个字符串。该字符串包含所有表项&#xff0c;表项之间以逗号和空格分隔&#xff0c;并在最后一个表项之前插入and。例如将前面…

spring依赖注入_Spring的依赖注入陷阱

spring依赖注入Spring框架中有三种注入变量&#xff1a; 基于二传手的注射 基于构造函数的注入 基于现场的注入 这些机制中的每一种都有优点和缺点&#xff0c;并且不仅只有一种正确的方法。 例如现场注入&#xff1a; Autowired private FooBean fooBean;在生产代码中使用…

C语言中的“悬空指针”和“野指针”是什么意思?

提起C语言大部分开发者很自然就会想到指针二字&#xff0c;没错&#xff0c;作为C的核心和灵魂&#xff0c;它的地位咱们就不再赘述了&#xff0c;今天我们想跟大家讲的是指针中的两个特有名词&#xff1a;“悬空指针”和“野指针”。1 悬空指针C语言中的指针可以指向一块内存&…

java zip解压_Java语言入门第一课

Java最初的目标是嵌入式设备&#xff0c;不过在嵌入式设备方面并未取得成功。失之东隅&#xff0c;收之桑榆&#xff0c;Java却在Web领域被广泛接受。近年来&#xff0c;随着Java在服务器领域的不断突破&#xff0c;让这门语言越来越流行。有人喜欢Java的纯面向对象&#xff0c…

怎么用c语言做出等妖三角形_初二数学培优,怎么用顶点坐标求三角形面积?割补法这样用很简单...

点击右上角关注“陈老师初中数理化”分享学习经验&#xff0c;一起畅游快乐的学习生活。根据顶点坐标求解三角形的面积是初二数学的重要知识点&#xff0c;本文就例题详细解析这类题型的解题思路&#xff0c;希望能给初二学生的数学学习带来帮助。例题如图&#xff0c;在平面直…

restful xml_使用入站适配器公开HTTP Restful API。 第1部分(XML)

restful xml1.简介 这篇文章的目的是使用Spring Integration HTTP入站适配器实现HTTP Restful API。 本教程分为两个部分&#xff1a; XML配置示例&#xff08;同一篇文章&#xff09;。 Java DSL示例。 这将在本教程的下一部分中进行说明&#xff0c;展示如何使用Spring Int…

C语言的位域

位域是什么&#xff1f;有些数据在存储时并不需要占用一个完整的字节&#xff0c;只需要占用一个或几个二进制位即可。例如开关只有通电和断电两种状态&#xff0c;用 0 和 1 表示足以&#xff0c;也就是用一个二进位。正是基于这种考虑&#xff0c;C语言又提供了一种叫做位域的…

xp精简工具_办公人士需要精简Win10吗?

首先要说自己的系统需求1&#xff0c;笔记本是主要生产力工具&#xff0c;靠它做方案&#xff0c;联系网络社交&#xff1b;2&#xff0c;会偶尔&#xff08;一月2-3次&#xff09;用到PS&#xff0c;AI&#xff0c;PR等软件&#xff1b;3&#xff0c;文件多&#xff0c;版本多…

matlab 删除路径_MATLAB使用教程(一)—新手来看

前言&#xff1a;在这里&#xff0c;本人默认大家已经安装好了MATLAB软件&#xff0c;如果没有&#xff0c;请自行安装。注意事项&#xff1a;新手容易犯错&#xff0c;打开MATLAB之后&#xff0c;请按CTRLQ这个组合键&#xff0c;是不是发现你的MATLAB关闭了&#xff1f;对&am…

数据的gzip压缩解压缩_使用GZIP和压缩数据

数据的gzip压缩解压缩抽象 我们都知道用zip或gzip压缩文件的含义。 但是在Java中使用压缩文件并不像您想的那样简单&#xff0c;特别是如果您不是直接使用文件而是压缩流数据时。 我们会去&#xff1a; 如何将字符串转换为压缩/压缩字节数组&#xff0c;反之亦然 创建用于读取…

C语言开发单片机为啥都是全局变量形式?

01前言全局变量简直就是嵌入式系统的戈兰高地。冲突最激烈的双方是&#xff1a;1. 做控制的工程师&#xff1b;2. 做非嵌入式的软件工程师。02做控制的工程师特点他们普遍的理解就是“变量都写成全局该有多方便”。我之前面试过一个非常有名的做控制实验室里出来的PhD/Master&a…

ajax get请求_python测试开发django50.jquery发送Ajax请求(get)

前言有时候&#xff0c;我们希望点击页面上的某个按钮后&#xff0c;不刷新整个页面&#xff0c;给后台发送一个请求过去&#xff0c;请求到数据后填充到html上&#xff0c;这意味着可以在不重新加载整个网页的情况下&#xff0c;对网页的某部分进行更新。Ajax可以完美的实现。…

primefaces_PrimeFaces Mobile入门

primefaces介绍 如果您已经开发了利用PrimeFaces的应用程序&#xff0c;或者打算开发可在台式机和移动设备上使用的Web应用程序&#xff0c;请考虑将PrimeFaces Mobile用于您的移动实施。 这篇博客文章将介绍一些基础知识&#xff0c;以帮助您开始为现有的PrimeFaces应用程序开…

C语言指针这些使用技巧值得收藏!

指针用的好犹如神助&#xff0c;用不好会让你叫苦连连&#xff0c;但大多数人是用不好指针的&#xff0c;所以后来的很多语言都把指针封装&#xff0c;屏蔽。比如JAVA&#xff0c;java是没有指针的&#xff0c;但是很多地方都用到指针&#xff0c;不过不对用户开放&#xff0c;…

如何用python实现地图定位_基于 PyQt5 实现地图中定位相片拍摄位置

项目简介&#xff1a;本次项目主要学习了如何查找相片中的 Exif 信息&#xff0c;并通过 Exif 信息中的 GPS 数据在百度地图中进行定位标点&#xff0c;以确定相片的拍摄地点。本次实验的目的旨在通过包含 GPS 信息的相片进行取证调查&#xff0c;当然个人娱乐也可以&#xff0…

mysql数据库中的int类型_MySQL中int(M)和tinyint(M)数值类型中M值的意义

在一开始接触MySQL数据库时&#xff0c;对于int(M)及tinyint(M)两者数值类型后面的M值理解是最多能够插入数据库中的值不能大于M&#xff1b;后来工作后&#xff0c;也是一边学习一边使用&#xff0c;之后的理解是其中的M的意思是插入数据库中的值的字符长度不能大于M&#xff…

arquillian_使用Arquillian测试安全的EJB

arquillian从历史上讲&#xff0c;很难测试安全的EJB。 到目前为止&#xff0c;我一直在使用专有技术&#xff08;如JBossLoginContextFactory&#xff09;中所述的文章&#xff08; 使用Arquillian在WildFly 8.1.x上测试安全的EJB&#xff09;来测试安全的EJB。 在今年Devoxx…

api怎么写_使用Node.js原生API写一个web服务器

Node.js是JavaScript基础上发展起来的语言&#xff0c;所以前端开发者应该天生就会一点。一般我们会用它来做CLI工具或者Web服务器&#xff0c;做Web服务器也有很多成熟的框架&#xff0c;比如Express和Koa。但是Express和Koa都是对Node.js原生API的封装&#xff0c;所以其实不…

C语言预处理命令分类和工作原理

C语言编程过程中&#xff0c;经常会用到如 #include、#define 等指令&#xff0c;这些标识开头的指令被称为预处理指令&#xff0c;预处理指令由预处理程序&#xff08;预处理器&#xff09;操作。相比其他编程语言&#xff0c;C/C 语言更依赖预处理器&#xff0c;故在阅读或开…