蓝盟IT外包
和许多业务一样,ES集群采用混布方式。 然而,由于在订单中心ES中已经存储了在线订单数据,混合集群偶尔可能占用大量资源并导致整个订单中心ES的服务异常。
明显影响订单查询稳定性的情况是不可接受的,针对这种情况,首先对于订单中心ES所在的灵活云,这些系统资源转移了优先权高的集群节点,ES集群的情况有所好转。 但是,随着集群数据的增加,灵活的云配置变得不能满足ES集群,并且为了完全物理隔离,最终将订单中心的ES集群引入到高配置物理机器中,从而提高了ES集群的性能。
ES的性能与硬件资源有很大关系,当ES集群被单独部署到物理机时,集群内部的节点不会独占整个物理机资源,而存在集群运行时同一物理机的节点切断资源的问题。 因此,在该情况下采用为每个ES节点配置一台物理机的方式,以使得ES节点能够使用最大的机器资源。
但是,如果下一个问题导致单个节点出现瓶颈,又如何? 我们该如何优化它呢?
如果请求碰到片段号码时未指定片段类型(Preference参数)查询,则将ES查询的原理加载到对应于片段号码的每个节点。 另一方面,集群的默认复制配置为一次和一次,在这种情况下,考虑扩展复制的方法,将其更改为默认的一次、一次和二次,同时增加对应的物理机器。
到目前为止,订单中心的ES集群已经有规模,但订单中心业务的时效性要求高,ES查询的稳定性要求高,集群发生异常时,查询服务会受到影响,影响整个订单生产流程。 显然,由于该异常可能是致命的,为了解决该问题,可以假设添加备用集群,并且当主集群中发生异常时查询业务可被实时降级为备用集群。
那个备用集群应该如何组装?主机之间的数据同步是如何进行的? 备用集群应该存储什么样的数据?
由于ES集群暂时没有良好的主准备方案,同时为了更好地控制ES数据的写入,我们采用业务双写方式设置了主设备集群。 每当业务操作需要写入ES数据时,同步写入主集群数据,然后异步写入备用集群数据。 此外,由于大多数ES查询的流量来自最近的订单,因此订单中心的数据库数据具有将在指定天数之前关闭的订单转发到历史订单库的存档机制。
因此,在存档机构中追加删除备用集群文件的逻辑,新建的备用集群存储的订单数据和订单中心在线数据库的数据量一致。 使用ZK在查询服务中建立流量控制开关,保证查询流量可以实时降级为备用集群。 在此,订购中心的主从集群完成,ES查询服务的稳定性大幅提高。