Jadual Kandungan
集群部署
Distribution模式
配置缓存容器和缓存
启动JDG集群
配置文件
客户端访问代码
Rumah pangkalan data tutorial mysql JBossDataGrid的集群部署与访问

JBossDataGrid的集群部署与访问

Apr 01, 2017 pm 03:02 PM
akses penempatan kluster

集群部署 JDG的缓存模式包括本地(Local)模式和集群(Clustered)模式。本项目采用多节点的Clustered模式部署,数据在多个节点的子集间进行复制,而不是同步复制到所有的节点。使用子集复制可以提升容错的效率但对可伸缩性不会造成太大影响。在使用Clustere

集群部署

JDG的缓存模式包括本地(Local)模式和集群(Clustered)模式。本项目采用多节点的Clustered模式部署,数据在多个节点的子集间进行复制,而不是同步复制到所有的节点。使用子集复制可以提升容错的效率但对可伸缩性不会造成太大影响。在使用Clustered模式部署之前,应该配置JGroup。

1. 使用UDP方式广播。

l 适用于大的集群(超过100节点);

l 适用于Invalidation和Replication模式;

l 提高socket通信的效率。

2. 使用TCP方式广播。

更适合于distribution模式的小规模(少于100节点)的集群,这时因为TCP协议在点对点通信中更加高效。

Clustered模式又分为Invalidation、Replication和Distribution模式。

Distribution模式

JDG的Distribution模式可以存储缓存数据在集群的子集节点,而不是存储数据到每一个节点中。通常存储到多于1个节点来提供数据冗余和容错。

Distribution模式使用一致性Hash算法从集群中选择存储数据的节点,一致性Hash算法配置为一个缓存数据存储到多个副本。副本数的设置需要平衡性能和容错,过多的副本会影响性能而过少的副本会造成节点失效时丢失数据。

在Distribution模式中,一个put操作会执行num_copies次远程调用,同样在任意节点的get操作会执行至少一次的远程调用。实际上,get操作甚至也会执行num_copies次远程调用,但它们是并行的,只要有一个返回,结果就会被返回给调用者。

读一致性

由于get操作是并行从多个节点取数并使用第一个返回的结果,在使用异步方式时可能会导致数据的不一致。注意这种情况只会出现在异步调用方式,如果是同步方式,则不会出现读不一致。

配置缓存容器和缓存

JDG的Cache在使用时,必须在standalone/configuration/clustered.xml配置文件中设置要使用的Cache配置。如果客户端访问了未配置命名的Cache,将视为非法操作。

…… 中配置cache-container和distributed-cache,本项目使用分布式缓存模式。

节点中增加对Cache的配置节点,如下面的名称为default的cache(默认缓存配置):

在<subsystemxmlns="urn:infinispan:server:core:5.2"default-cache-container="clustered"> 
…… </subsystem>中配置cache-container和distributed-cache,本项目使用分布式缓存模式。
节点<cache-containername="clustered" 
default-cache="default">中增加对Cache的配置节点,如下面的名称为default的cache(默认缓存配置):
Salin selepas log masuk


#定义缓存默认的过期策略以上的配置项目并非所有的都是必须,各节点说明见下:

#lifespan: 缓存条目最大的生存时间,单位毫秒,-1表示从不过期。

# max-idle: 缓存条目的最大空闲时间,单位毫秒,-1表示从不过期。如果空闲时间超过该值,条目将被视为过期。

#interval: 从缓存中清除过期条目的执行间隔时间(毫秒)。如果要完全禁用定期回收任务,设置为-1。

#定义缓存默认的回收策略

#eviction: 指定回收策略。可用的回收策略包括UNORDERED,FIFO,LIRS和NONE(禁用回收策略)。

#max-entries: 指定Cache实例中的最大条目数量,-1表示不限制。实际取值为>=选定值的2的幂的最小值

#定义缓存锁

#isolation: 定义隔离级别。可用的隔离级别包括NONE,READ_UNCOMMITED,READ_COMMITED,REPEATABLE_READ,SERIALIZABLE,默认REPEATABLE_READ

#striping: 锁条带化。如果为true,使用共享锁池来维护所有需要锁定的条目。否则,为每个条目创建一个锁。锁条带化有助于控制内存占用,但可能会降低系统的并发能力。

#acquire-timeout: 尝试获取一个特定锁的最大超时时间。

#concurrency-level: 锁容器的并发级别。根据和infinispan并发交互的线程数量来调整这个值。

#concurrent-updates: 仅用于非事务缓存。如果设置为true(默认值),则缓存在并发更新时保持数据的一致性。对于集群模式将带来额外的RPC成本,如果你的应用不会并发写数据,禁用该标志以提升性能。

#定义缓存事务

#虽然可以定义服务器缓存支持事务,但目前没有可用的协议来支持事务能力。

启动JDG集群

可以把JDG部署在多个节点构成一个集群,目前我们的项目使用的是数据缓存服务使用默认3个节点的分布式集群。在启动时各个节点的nodeName必须予以区分,例如分别命名为nodeA、nodeB和nodeC。

JDG是运行在JBoss容器中的,在启动时即启动了JBoss,如果服务器已经运行了JBOSS,请在启动时设置端口offset,以避免冲突。

同时为了避免和JBoss服务器的JBOSS_HOME冲突,定义环境变量JDG_HOME(例如exportJDG_HOME=/usr/local/jboss-datagrid-server-6.1.0),并修改bin/clustered.sh中的所有JBOSS_HOME替换为JDG_HOME。

以nodeA节点为例(JDG对外访问的端口为11222,下面offset后为11322),服务器ip是192.168.1.100,执行启动命令为:

./clustered.sh-Djboss.socket.binding.port-offset=100 -Djboss.bind.address=192.168.1.100 -Djboss.node.name=nodeA
Salin selepas log masuk

客户端访问

远程客户端可以使用REST, memcached或HotRod协议,我们这里使用HotRod协议,它是一种二进制协议,性能较好,同时它提供了自动的负载均衡和failover。

配置文件

客户端访问缓存服务端的配置文件默认命名为hotrod-client.properties。定义解释见下。

############JDG 服务器配置############
##请求均衡策略,default =org.infinispan.client.hotrod.impl.transport.tcp.RoundRobinBalancingStrategy
#infinispan.client.hotrod.request_balancing_strategy=
##服务器列表,default = 127.0.0.1:11222
infinispan.client.hotrod.server_list=192.168.1.100:11322;192.168.1.101:11322;192.168.1.102:11322
##是否强迫返回值, default = false
#infinispan.client.hotrod.force_return_values=
##TCP_NO_DELAY, default = true
#infinispan.client.hotrod.tcp_no_delay=
##启动时是否发送PING请求来获取CLUSTER拓扑, default = true
#infinispan.client.hotrod.ping_on_startup=
##控制使用的传输机制,目前只支持TCP, 
default =org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory
#infinispan.client.hotrod.transport_factory=
##序列化使用的Marshaller, default =org.infinispan.marshall.jboss.GenericJBossMarshaller
##如果要降低传输负载,可以配置为ApacheAvroMarshaller
#infinispan.client.hotrod.marshaller=
##指定自定义的AsyncExecutorFactory, 
default =org.infinispan.client.hotrod.impl.async.DefaultAsyncExecutorFactory
#infinispan.client.hotrod.async_executor_factory=
##指定并发线程池大小, default = 10
#infinispan.client.hotrod.default_executor_factory.pool_size=
##指定并发队列大小, default = 100000
#infinispan.client.hotrod.default_executor_factory.queue_size=
##Hash函数实现的版本及一致性Hash算法,和HotRod的服务器版本相关
#infinispan.client.hotrod.hash_function_impl.1=
##序列化和反序列化键的缓存允许字节数,目的是避免数组大小调整, default =64
#infinispan.client.hotrod.key_size_estimate=
##序列化和反序列化值的缓存允许字节数,目的是避免数组大小调整, default =512
#infinispan.client.hotrod.value_size_estimate=
##socket读超时, default = 60000 (60 seconds)
infinispan.client.hotrod.socket_timeout=50000
##socket连接超时, default = 60000 (60 seconds)
infinispan.client.hotrod.connect_timeout=10000
##指定客户端使用的协议版本, default = 1.1,其他值还有1.0
#infinispan.client.hotrod.protocol_version=
##指定错误时的重试次数, default = 10
#infinispan.client.hotrod.max_retries=
############连接池配置############
##指定每个服务器的最大连接数,负值表示没有限制,默认-1
maxActive=100
##指定服务器组内允许的全局持久连接的数量,负值表示没有限制,默认-1
maxTotal=100
##指定每个服务器空闲持久连接的最大数,负值表示没有限制,默认-1
maxIdle=20
##指定当连接池耗尽时,服务器如何响应:
##0-抛出异常给调用者
##1-阻塞调用者,直到有空闲的连接
##2-创建一个新的连接(不受maxActive的限制)
##默认值是1
#whenExhaustedAction=1
##检查空闲连接的Eviction线程每次运行间隔的时间,默认是2分钟
#timeBetweenEvictionRunsMillis=120000
##在空闲池中的连接存在多长时间需要被销毁,负值表示没有空闲连接被销毁,默认值为30分钟
#minEvictableIdleTimeMillis=1800000
##指定在Eviction线程执行时,空闲的连接是否通过发送一个TCP数据包到服务器来验证,
##即无法验证的连接将从池中被清除
##默认值为true
#testWhileIdle=true
##指定每个服务器最小的可用连接的空闲线程数。默认值为1
#minIdle=1
Salin selepas log masuk

客户端访问代码

import java.net.URL;

import java.util.Map;

 

import org.infinispan.client.hotrod.RemoteCache;

import org.infinispan.client.hotrod.RemoteCacheManager;

import org.infinispan.client.hotrod.ServerStatistics;

 

 

public class Quickstart {

 

 public static void main(String[] args) {

 

  URL resource = Thread.currentThread().getContextClassLoader()

                                     
  .getResource("hotrod-client.properties");

  RemoteCacheManager cacheContainer = new RemoteCacheManager(resource, true);

 

  //获得一个远程的Cache

  RemoteCache cache = cacheContainer.getCache("myCache");

 

  //put数据到缓存中,然后确认是否存在

  cache.put("name", "paul");

  if(cache.get("name").equals("paul")){

   System.out.println("Cache Hit!");

  } else {

   System.out.println("Cache Miss!");

  }

 

  //删除缓存数据

  cache.remove("name");

 

  cacheContainer.stop();

 }

}
Salin selepas log masuk

 以上就是JBossDataGrid的集群部署与访问的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

iOS 17: Cara mengawal apl yang boleh mengakses foto anda iOS 17: Cara mengawal apl yang boleh mengakses foto anda Sep 13, 2023 pm 09:09 PM

Dalam iOS17, Apple mempunyai lebih kawalan ke atas perkara yang boleh dilihat oleh apl dalam foto. Teruskan membaca untuk mengetahui cara mengurus akses apl mengikut apl. Dalam iOS, pemilih foto dalam apl Apple membolehkan anda berkongsi foto tertentu dengan apl itu, manakala pustaka foto anda yang lain kekal peribadi. Apl mesti meminta akses kepada keseluruhan pustaka foto anda dan anda boleh memilih untuk memberikan akses berikut kepada apl: Akses Terhad – Apl hanya boleh melihat imej yang anda boleh pilih, yang boleh anda lakukan pada bila-bila masa dalam apl atau dengan pergi ke Tetapan &gt ;Privasi & Keselamatan&gt;Foto untuk melihat imej yang dipilih. Akses penuh - Apl boleh melihat foto

Bagaimana untuk mengakses medan JSON, tatasusunan dan objek bersarang JSONNode di Java? Bagaimana untuk mengakses medan JSON, tatasusunan dan objek bersarang JSONNode di Java? Aug 30, 2023 pm 11:05 PM

JsonNode ialah model pokok JSON Jackson yang boleh membaca JSON ke dalam contoh JsonNode dan menulis JsonNode ke dalam JSON. Kita boleh menggunakan Jackson untuk membaca JSON ke dalam JsonNode dengan mencipta contoh ObjectMapper dan memanggil kaedah readValue(). Kita boleh mengakses medan, tatasusunan atau objek bersarang menggunakan kaedah get() kelas JsonNode. Kita boleh menggunakan kaedah asText() untuk mengembalikan perwakilan rentetan yang sah dan menukar nilai nod kepada Javaint menggunakan kaedah asInt() kelas JsonNode. Dalam contoh di bawah kita boleh mengakses Json

Akses metadata pelbagai fail audio dan video menggunakan Python Akses metadata pelbagai fail audio dan video menggunakan Python Sep 05, 2023 am 11:41 AM

Kami boleh mengakses metadata fail audio menggunakan Mutagen dan modul eyeD3 dalam Python. Untuk metadata video kita boleh menggunakan filem dan perpustakaan OpenCV dalam Python. Metadata ialah data yang menyediakan maklumat tentang data lain, seperti data audio dan video. Metadata untuk fail audio dan video termasuk format fail, resolusi fail, saiz fail, tempoh, kadar bit, dsb. Dengan mengakses metadata ini, kami boleh mengurus media dengan lebih cekap dan menganalisis metadata untuk mendapatkan beberapa maklumat berguna. Dalam artikel ini, kita akan melihat beberapa perpustakaan atau modul yang disediakan oleh Python untuk mengakses metadata fail audio dan video. Akses metadata audio Sesetengah perpustakaan untuk mengakses metadata fail audio adalah - menggunakan mutagenesis

Bagaimana untuk menyelesaikan masalah tidak dapat diakses selepas Tomcat menggunakan pakej perang Bagaimana untuk menyelesaikan masalah tidak dapat diakses selepas Tomcat menggunakan pakej perang Jan 13, 2024 pm 12:07 PM

Bagaimana untuk menyelesaikan masalah bahawa Tomcat tidak boleh berjaya mengakses pakej perang selepas menggunakan ia memerlukan contoh kod khusus Sebagai pelayan Web Java yang digunakan secara meluas, Tomcat membenarkan pemaju untuk membungkus aplikasi Web mereka sendiri yang dibangunkan ke dalam fail perang untuk penggunaan. Walau bagaimanapun, kadangkala kita mungkin menghadapi masalah tidak berjaya mengakses pakej perang selepas menggunakannya. Ini mungkin disebabkan oleh konfigurasi yang salah atau sebab lain. Dalam artikel ini, kami akan menyediakan beberapa contoh kod konkrit yang menangani dilema ini. 1. Semak perkhidmatan Tomcat

Bagaimana untuk menyelesaikan masalah akses dinafikan apabila mengubah suai fail dalam Windows 7 Bagaimana untuk menyelesaikan masalah akses dinafikan apabila mengubah suai fail dalam Windows 7 Jul 04, 2023 pm 07:01 PM

Bagaimana untuk menyelesaikan masalah akses dinafikan apabila mengubah suai fail dalam win7? Apabila mengubah suai beberapa fail sistem, kami selalunya akan digesa bahawa kami tidak mempunyai kebenaran untuk melaksanakan operasi. Kami boleh mematikan kebenaran folder atau mendapatkan hak pentadbir. Bagi pengguna yang perlu mengubah suai fail tersebut, sila lihat tutorial terperinci berikut. Penyelesaian kepada masalah akses ditolak apabila mengubah suai fail dalam Windows 7: 1. Mula-mula pilih folder yang sepadan, klik alat di atas, dan pilih pilihan folder. 2. Masukkan tab Lihat. 3. Nyahtanda Gunakan Perkongsian Fail Mudah dan sahkan. 4. Kemudian klik kanan folder yang sepadan dan klik Properties. 5. Masukkan tab Keselamatan. 6. Pilih kedudukan ikon dan klik Lanjutan. 7

Bagaimana untuk menyelesaikan akses sumber luaran dan panggilan dalam pembangunan PHP Bagaimana untuk menyelesaikan akses sumber luaran dan panggilan dalam pembangunan PHP Oct 08, 2023 am 11:01 AM

Cara menyelesaikan masalah mengakses dan memanggil sumber luaran dalam pembangunan PHP memerlukan contoh kod khusus Dalam pembangunan PHP, kita sering menghadapi situasi di mana kita perlu mengakses dan memanggil sumber luaran, seperti antara muka API, perpustakaan pihak ketiga atau sumber pelayan lain. . Apabila berurusan dengan sumber luaran ini, kita perlu mempertimbangkan cara mengakses dan membuat panggilan dengan selamat sambil memastikan prestasi dan kebolehpercayaan. Artikel ini menerangkan beberapa penyelesaian biasa dan menyediakan contoh kod yang sepadan. 1. Gunakan perpustakaan curl untuk memanggil sumber luaran Curl ialah perpustakaan sumber terbuka yang sangat berkuasa.

Perkara yang perlu dilakukan jika folder kongsi tidak boleh diakses dalam Windows 10 Home Edition Perkara yang perlu dilakukan jika folder kongsi tidak boleh diakses dalam Windows 10 Home Edition Jan 11, 2024 pm 07:36 PM

Berkongsi folder sememangnya ciri yang sangat berguna dalam persekitaran rangkaian rumah atau perniagaan Ia membolehkan anda berkongsi folder dengan pengguna lain dengan mudah, dengan itu memudahkan pemindahan dan perkongsian fail. Folder kongsi Win10 Home Edition tidak boleh diakses Penyelesaian: Penyelesaian 1: Semak sambungan rangkaian dan kebenaran pengguna Apabila cuba menggunakan folder kongsi Win10, pertama sekali kami perlu mengesahkan sama ada sambungan rangkaian dan kebenaran pengguna adalah normal. Jika terdapat masalah dengan sambungan rangkaian atau pengguna tidak mempunyai kebenaran untuk mengakses folder kongsi, ia mungkin mengakibatkan tidak dapat diakses. 1. Mula-mula, sila pastikan sambungan rangkaian lancar supaya komputer dan komputer tempat folder kongsi berada berada dalam LAN yang sama dan boleh berkomunikasi secara normal. 2. Kedua, semak kebenaran pengguna untuk mengesahkan bahawa pengguna semasa mempunyai kebenaran untuk berkongsi fail.

Analisis mendalam mengenai penggunaan kluster MongoDB dan perancangan kapasiti Analisis mendalam mengenai penggunaan kluster MongoDB dan perancangan kapasiti Nov 04, 2023 pm 03:18 PM

MongoDB ialah pangkalan data bukan perhubungan yang telah digunakan secara meluas dalam banyak perusahaan besar. Berbanding dengan pangkalan data hubungan tradisional, MongoDB mempunyai fleksibiliti dan skalabiliti yang sangat baik. Artikel ini akan menyelidiki penggunaan dan perancangan kapasiti kluster MongoDB untuk membantu pembaca memahami dan menggunakan MongoDB dengan lebih baik. 1. Konsep kluster MongoDB Kluster MongoDB terdiri daripada berbilang kejadian MongoDB.

See all articles