集群部署 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,将视为非法操作。
在cd9436c060c15c8f48d4fbcf8cd69ade …… 85a95edf6f4640562c01b2444c73bff3中配置cache-container和distributed-cache,本项目使用分布式缓存模式。
节点8c9ccfb56a3a600eeec16861a040c50b中增加对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(默认缓存配置):
#定义缓存默认的过期策略以上的配置项目并非所有的都是必须,各节点说明见下:
#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
客户端访问
远程客户端可以使用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
客户端访问代码
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(); } }
以上就是JBossDataGrid的集群部署与访问的内容,更多相关内容请关注PHP中文网(www.php.cn)!

データベースの最適化では、クエリ要件に従ってインデックス作成戦略を選択する必要があります。1。クエリに複数の列が含まれ、条件の順序が固定されている場合、複合インデックスを使用します。 2。クエリに複数の列が含まれているが、条件の順序が修正されていない場合、複数の単一列インデックスを使用します。複合インデックスは、マルチコラムクエリの最適化に適していますが、単一列インデックスは単一列クエリに適しています。

MySQLスロークエリを最適化するには、slowquerylogとperformance_schemaを使用する必要があります。1。LowerQueryLogを有効にし、しきい値を設定して、スロークエリを記録します。 2。performance_schemaを使用してクエリの実行の詳細を分析し、パフォーマンスのボトルネックを見つけて最適化します。

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

MySQL非同期マスタースレーブレプリケーションにより、BINLOGを介したデータの同期が可能になり、読み取りパフォーマンスと高可用性が向上します。 1)マスターサーバーレコードはBinlogに変更されます。 2)スレーブサーバーは、I/Oスレッドを介してBINLOGを読み取ります。 3)サーバーSQLスレッドは、BINLOGを適用してデータを同期させます。

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

MySQLのインストールと基本操作には、次のものが含まれます。1。mysqlをダウンロードしてインストールし、ルートユーザーパスワードを設定します。 2。sqlコマンドを使用して、createdatabaseやcreateTableなどのデータベースとテーブルを作成します。 3. CRUD操作を実行し、挿入、選択、更新、コマンドを削除します。 4.パフォーマンスを最適化し、複雑なロジックを実装するためのインデックスとストアドプロシージャを作成します。これらの手順を使用すると、MySQLデータベースをゼロから構築および管理できます。

Innodbbufferpoolは、データとインデックスページをメモリにロードすることにより、MySQLデータベースのパフォーマンスを向上させます。 1)データページは、ディスクI/Oを削減するためにBufferPoolにロードされます。 2)汚れたページは、定期的にディスクにマークされ、リフレッシュされます。 3)LRUアルゴリズム管理データページの排除。 4)読み出しメカニズムは、可能なデータページを事前にロードします。

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
