同时扩容两个节点
Aerospike集群同时扩容两个节点时,集群可能会出现意外情况。
从Aerospkie社区找到官方回复,Aerospike扩容时每次只能扩容1个节点。扩容方法是将新增节点UDP组播地址和端口配置成跟现有集群组播地址一致。同时扩容1个以上节点时,会出现意想不到的情况。
数据迁移会和客户端竞争读写资源
Aerospike集群扩容成功后各节点之间会有大量的数据迁移,数据迁移会和客户端竞争读写资源从而影响到线上读写性能。
需要在迁移之前配置好数据迁移相干参数,控制数据迁移进度,避免出现数据迁移占用过量资源、乃至服务重启的情况。
正常的重启流程
正常的重启流程是,1个节点1个节点的重启,如果直接重启所有节点会出现备份数据被删除的情况。
为了保证数据不丢失,严格依照标准的重启流程来,每一个节点重启完后等待数据迁移完成后,再重启下一个节点。
access-address 参数配置
access-address 参数配置成内网ip还是配置成外网ip适合?不配的话会出现甚么情况?
access-address 用来配置集群ip参数列表提供给客户端使用。如果既需要外网访问,有需要内网访问,那末就不用配置这个参数。只需要内网访问配置成内网IP,只需要外网访问的话配置成外网IP。
HotKey
Aerospike对HotKey有限制,因而频繁对一个key读写时,会返回HotKey错误(errorcode 14) 。服务端可以通过增大 transaction-pending-limit配置来提高对同一个key操作的并发量,它的默认为20,值为0时表示不限。增大该配置可能会降低一定性能。客户端可能需要对该异常增加重试处理,但重试可能会进一步增大HotKey的风险。
Rebalance
在节点宕机或是增减节点时会Rebalance数据,这个过程会影响对外服务质量。但Rebalance速度可以控制,因而需要在保证服务质量和集群快速恢复二者间做权衡。
Aerospike不会存储原始key
Aerospike不会存储原始key,实际索引的是原始key的一个20字节hash值,如果业务需要使用原始key则必须另外设置bin存储。即便key和value值的字节数较少,但key本身占据20个字节,因而实际占用的空间会比较大。