日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

apache ignite_从In Memory Data Grid,Apache Ignite快速入门

發布時間:2023/12/3 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 apache ignite_从In Memory Data Grid,Apache Ignite快速入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

apache ignite

IMDG或內存數據網格不是內存中關系數據庫,NOSQL數據庫或關系數據庫。 它是另一種軟件數據存儲庫。 數據模型分布在單個位置或多個位置的許多服務器上。 這種分布稱為數據結構。 這種分布式模型被稱為“無共享”架構。 IMDG具有以下特征:

  • 所有服務器可以在每個站點中處于活動狀態。
  • 所有數據都存儲在服務器的RAM中。
  • 可以不中斷地添加或刪除服務器,以增加可用的RAM量。
  • 數據模型是非關系的,是基于對象的。
  • 用平臺獨立語言編寫的分布式應用程序。
  • 數據結構具有彈性,可以無中斷地自動檢測和恢復一臺或多臺服務器。
  • 大多數情況下,我們將IMDG用于應用程序服務器的Web會話管理,并用作分布式緩存或L2緩存。 Hazelcast社區的添加是我們一直以來最喜歡的IMDG工具,但是從hazelcast社區版的最新情況來看,它的性能讓我們感到非常不滿意。 作為HazelCast的快速替代方案,我們決定嘗試使用
    Apache點燃 。 這篇文章專門針對apache點燃,可用于快速啟動指南。 對于安裝,我將使用具有以下配置的2個Redhat操作系統虛擬機:

    • CPU:2
    • 內存:4
    • 硬盤:25 GB
    • 操作系統:Redhat Santiago

    從Apache ignite6的許多功能中,我們將僅研究以下功能:

  • 準備操作系統
  • 使用Spring使用DataGrid
  • MyBatis緩存配置
  • Spring緩存
  • 安裝apache點燃

    前提條件:

  • Java 1.7及更高版本
  • 打開端口:47500..47509、8080(用于Rest接口),47400、47100:47101、48100:48101、31100:31101在操作系統中安裝JDK之后,我們必須打開上述端口。 通過執行以下命令,我們可以操縱iptables。 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 47500:47509 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 47400 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 47100 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 47101 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 48100 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 48101 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 31100 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 31101 -j ACCEPT/etc/init.d/iptables restart
  • 在幾臺機器上安裝Apache ignite

  • 讓我們從以下鏈接下載ignite 1.5.0final版本。
  • 將檔案解壓縮到os中的任何位置,例如/ opt / apache-ignite
  • 將環境路徑IGNITE_HOME添加到apache ignite的主目錄中。
  • 將文件夾$ IGNITE_HOME / libs / optional / ignite-rest-http復制到/home/user/apache-ignite-fabric-1.5.0/libs,它將通過REST接口啟用apign點火。
  • 運行命令ignite.sh examples / config / example-cache.xml以啟動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緩存并檢查其工作方式。

    <bean id="servicesBean" class="com.blu.ignite.WebServices"><property name="dao" ref="userServicesBean"/></bean><bean id="userServicesBean" class="com.blu.ignite.dao.UserServices"><property name="userMapper" ref="userMapper"/></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><bean id="userMapper" autowire="byName" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="mapperInterface" value="com.blu.ignite.mapper.UserMapper" /><property name="sqlSessionFactory" ref="sqlSessionFactory" /></bean><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.blu.ignite.mapper" /></bean>

    我們添加了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快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。