简单的网站开发软件,做男性服装的网站,新网站建设代理商,做特产网站的原因这是我撰写的有关Hazelcast的一系列文章的延续。 我强烈建议您阅读其他内容#xff1a; 第1 部分 #xff0c; 第2 部分 #xff0c; 第3 部分和第4部分 。 让人一见倾心的东西#xff1f; 这篇文章中将没有Hazelcast专用代码。 让我重复一遍。 这篇文章中将没有Hazelcast… 这是我撰写的有关Hazelcast的一系列文章的延续。 我强烈建议您阅读其他内容 第1 部分 第2 部分 第3 部分和第4部分 。 让人一见倾心的东西 这篇文章中将没有Hazelcast专用代码。 让我重复一遍。 这篇文章中将没有Hazelcast专用代码。 这是因为Hazelcast的优秀人员生产的产品执行不同的标准。 这样可以选择客户。 Hazelcast实现的那些标准之一是内存缓存。 JCache呢 JCacheJSR 107仅用于Java。 Memcached协议客户端已跨多种语言实现因此不能将其固定为一种语言。 在我看来实施memcached协议是明智之举因为它使Hazelcast不仅仅是“ Java东西”。 为什么要使用Hazelcast 很好的问题 如果可以使用任何内存缓存服务器为什么要使用Hazelcast。 好吧说实话除非一台服务器在多台服务器之间共享数据库否则一台甚至可能不需要缓存 如果确实需要缓存解决方案这就是为什么我会选择Hazelcast的原因 自动实时备份–我没有读过至少一次没有备份过的一种Hazelcast数据类型。 只需站起来两个实例一个实例从另一个实例中脱机即可获得全部收益。 安全性–如果需要缓存的服务器位于不同的网络中那么使用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 version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.darylmathison/groupIdartifactIdMemcache/artifactIdversion1.0-SNAPSHOT/versionpackagingjar/packagingpropertiesmaven.compiler.source1.7/maven.compiler.sourcemaven.compiler.target1.7/maven.compiler.target/propertiesbuildpluginartifactIdmaven-compiler-plugin/artifactIdversion2.3.2/versionconfigurationshowDeprecationtrue/showDeprecation/configuration/pluginplugingroupIdorg.codehaus.mojo/groupIdartifactIdexec-maven-plugin/artifactIdversion1.3.2/versionexecutionsexecutiongoalsgoaljava/goal/goals/execution/executionsconfigurationmainClasscom.darylmathison.memcache.Main/mainClass/configuration/plugin/plugins/builddependenciesdependencygroupIdnet.spy/groupIdartifactIdspymemcached/artifactIdversion2.11.5/version/dependency/dependencies/projectdependencygroupIdorg.apache.camel/groupIdartifactIdcamel-servlet/artifactId/dependencydependencygroupIdorg.apache.camel/groupIdartifactIdcamel-metrics/artifactId/dependencydependencygroupIdorg.apache.camel/groupIdartifactIdcamel-swagger/artifactId/dependencydependencygroupIdorg.apache.camel/groupIdartifactIdcamel-jackson/artifactId/dependencyPython 接下来我找到了适用于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