apache ignite_从In Memory Data Grid,Apache Ignite快速入门
apache ignite
IMDG或內存數據網格不是內存中關系數據庫,NOSQL數據庫或關系數據庫。 它是另一種軟件數據存儲庫。 數據模型分布在單個位置或多個位置的許多服務器上。 這種分布稱為數據結構。 這種分布式模型被稱為“無共享”架構。 IMDG具有以下特征:
大多數情況下,我們將IMDG用于應用程序服務器的Web會話管理,并用作分布式緩存或L2緩存。 Hazelcast社區的添加是我們一直以來最喜歡的IMDG工具,但是從hazelcast社區版的最新情況來看,它的性能讓我們感到非常不滿意。 作為HazelCast的快速替代方案,我們決定嘗試使用
Apache點燃 。 這篇文章專門針對apache點燃,可用于快速啟動指南。 對于安裝,我將使用具有以下配置的2個Redhat操作系統虛擬機:
- CPU:2
- 內存:4
- 硬盤:25 GB
- 操作系統:Redhat Santiago
從Apache ignite6的許多功能中,我們將僅研究以下功能:
安裝apache點燃
前提條件:
在幾臺機器上安裝Apache ignite
如果一切正常,您應該在控制臺中看到以下日志:
[12:32:01] Ignite node started OK (id=ceb614ca) [12:32:01] Topology snapshot [ver=4, servers=2, clients=0, CPUs=3, heap=2.0GB]并且通過網址http:// host:port / ignite?cmd = version也可以通過http獲得ignite
使用Spring使用DataGrid
首先,我們必須構建Maven項目以編寫一堆代碼來檢查apache Ignite的功能。
- 將以下依賴項添加到pom.xml <dependency><groupId>org.apache.ignite</groupId><artifactId>ignite-core</artifactId><version>${ignite.version}</version></dependency><dependency><groupId>org.apache.ignite</groupId><artifactId>ignite-spring</artifactId><version>${ignite.version}</version></dependency><dependency><groupId>org.apache.ignite</groupId><artifactId>ignite-indexing</artifactId><version>${ignite.version}</version></dependency><!-- myBatis --><dependency><groupId>org.mybatis.caches</groupId><artifactId>mybatis-ignite</artifactId><version>1.0.0-beta1</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.4</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.3.1</version></dependency><!-- Oracle 12--><dependency><groupId>com.oracle</groupId><artifactId>ojdbc6</artifactId><version>11.2.0.3</version></dependency>
請注意,Oracle JDBC客戶端jar應該位于本地Maven存儲庫中。 就我而言,我使用Oracle 11.2.02客戶端。
- 使用以下上下文在資源目錄中添加spring-context.xml文件: <beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:cache="http://www.springframework.org/schema/cache"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/cachehttp://www.springframework.org/schema/cache/spring-cache-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd "><!-- Enable annotation-driven caching. --><cache:annotation-driven/><context:property-placeholder location="classpath:jdbc.properties"/><!-- beans --><bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration"><property name="gridName" value="TestGrid"/><!-- Enable client mode. --><property name="clientMode" value="true"/><property name="cacheConfiguration"><list><!-- Partitioned cache example configuration (Atomic mode). --><bean class="org.apache.ignite.configuration.CacheConfiguration"><!--<property name="atomicityMode" value="ATOMIC"/>--><!-- Set cache mode. --><property name="cacheMode" value="PARTITIONED"/><property name="backups" value="1"/><property name="statisticsEnabled" value="true" /></bean></list></property><!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. --><property name="discoverySpi"><bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"><property name="ipFinder"><!-- Uncomment static IP finder to enable static-based discovery of initial nodes. --><!--<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">--><bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder"><property name="addresses"><list><!-- In distributed environment, replace with actual host IP address. --><value>Add your node ip address</value><value>add your node ip address</value></list></property></bean></property></bean></property></bean><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="mapperLocations" value="classpath*:com/blu/ignite/dao/*Mapper.xml"/></bean><bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close"><property name="URL" value="${jdbc.url}" /><property name="user" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><property name="connectionCachingEnabled" value="true"/></bean>
</beans>
讓我們檢查一些配置屬性:
- 屬性名稱=“ clientMode”值=“ true” –此屬性將強制當前應用程序作為客戶端運行。
- 屬性名稱=“ cacheMode”值=“已分配” –緩存模式將被分區,緩存模式也可被復制。
- 屬性名稱=“備份”值=“ 1” –總是在另一個節點中有一個冗余的緩存元素。
- 屬性名稱=“ statisticsEnabled”值=“ true” –此屬性將激活緩存統計信息。
- 現在讓我們寫一些: public class SpringIgniteRun {public static void main(String[] args) throws Exception{System.out.println("Run Spring example!!");ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-core.xml");IgniteConfiguration igniteConfiguration = (IgniteConfiguration) ctx.getBean("ignite.cfg");Ignite ignite = Ignition.start(igniteConfiguration);// get or create cacheIgniteCache cache = ignite.getOrCreateCache("myCacheName");for(int i = 1; i < 1000; i++){cache.put(i, Integer.toString(i));}for(int i =1; i<1000;i++){System.out.println("Cache get:"+ cache.get(i));}Thread.sleep(20000); // sleep for 20 seconds// statisticsSystem.out.println("Cache Hits:"+ cache.metrics(ignite.cluster()).getCacheHits());ignite.close();}
}
上面的代碼是自解釋的,我們只創建一個名為“ myCacheName”的緩存,并添加1000 String整數值。 將值插入緩存后,我們還從緩存中讀取元素并檢查統計信息。 通過ignitevisorcmd,您還可以監視數據網格,隨后您可以找到網格統計信息的屏幕截圖
MyBatis緩存配置
現在讓我們添加MyBatis ORM l2緩存并檢查其工作方式。
我們添加了SQLsessionFactory,MyBatis映射器和Service Bean。 現在讓我們添加* .Mapper.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.blu.ignite.mapper.UserMapper"><cache type="org.mybatis.caches.ignite.IgniteCacheAdapter" /><select id="getUser" parameterType="String" resultType="com.blu.ignite.dto.User" useCache="true">SELECT * FROM users WHERE id = #{id}</select><select id="getUniqueJob" parameterType="String" resultType="String" useCache="false">select unique job from emp order by job desc</select></mapper>emp和dept表的完整sql(DDL / DML)腳本可在目錄com / blu / ignite / scripts中找到。我創建了一個簡單的Web服務,以獲取用戶和員工的獨特工作。 這是Web服務的代碼,如下所示:
@WebService(name = "BusinessRulesServices",serviceName="BusinessRulesServices",targetNamespace = "http://com.blu.rules/services") public class WebServices {private UserServices userServices;@WebMethod(operationName = "getUserName")public String getUserName(String userId){User user = userServices.getUser(userId);return user.getuName();}@WebMethod(operationName = "getUniqueJobs")public List getUniqueJobs(){return userServices.getUniqueJobs();}@WebMethod(exclude = true)public void setDao(UserServices userServices){this.userServices = userServices;}}調用Web方法getUserName將查詢數據庫并將查詢結果緩存在ignite緩存中。
Spring緩存
使用spring緩存,您可以實現任何spring bean方法的返回值的緩存。 Apache ignite將通過您將通過注釋@Cacheable(“ returnHello”)提供的緩存名稱來創建緩存,例如,如果我具有如下方法:
@Cacheable("returnHello")public String sayhello(String str){System.out.println("Client says:"+ str);return "hello"+str;}第一次調用該方法時,將在ignite中創建一個帶有參數名稱的復制緩存,下次調用上述方法時,將從緩存中返回該值。
- 現在就足夠了。 很快我將以apache ignite的一些新功能返回。 該項目的完整源代碼將在github中找到。
翻譯自: https://www.javacodegeeks.com/2016/02/quick-start-memory-data-grid-apache-ignite.html
apache ignite
總結
以上是生活随笔為你收集整理的apache ignite_从In Memory Data Grid,Apache Ignite快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 铜导电吗 铜介绍
- 下一篇: hotspot 默认 gc_默认HotS