有谱云采用分布式部署的架构,这就需要均衡每一台服务器的负载,从而保证每一个请求的访问速度。有谱云通过其''7层"负载均衡,将用户发送到7层的请求,经分析后转发到负载较小的服务器上。
有谱云的''7层"负载均衡会自动对后端的应用运行实例状态进行检查,若在给定的时间内没有收到应用运行实例的反馈信息则认为该应用运行实例不可用,就不再将请求转发给相应的应用运行实例,当出故障的应用运行实例恢复正常后,根据负载情况会重新将请求转发到恢复后的应用运行实例上。
有谱云定时对其上运行的应用实例进行健康检查,发现运行的应用实例存在,如严重异常、运行实例数低于最低阀值、内存溢出等问题时自动将应用实例进行相关分析处理,如对应用实例进行漂移、重启、新启等动作。
同时,有谱云也会定时检查平台各种基础设施、技术服务等组件,保障其99.99%的高可用性,确保平台稳定运行。
有谱云的Web服务器采用分布式部署的方式,开发者将部署包部署到有谱云后,会通过副本的方式将部署包存放在有谱云上,同时允许开发商运行多个应用实例,如此,即使某一台服务器宕机,用户请求也会被转发到其他的服务器上,不会影响应用的正常使用,大大提高了应用的稳定性。
有谱云作为公有云平台,首先面临的问题是应用的隔离,缺乏良好的隔离机制,平台必然无法长期稳定地运行。目前有谱云基于Docker容器来实现沙箱,其隔离性主要体现在以下几个方面:
有谱云目前仅提供标准JAVA web应用的Docker容器,后续我们会加入基于Docker容器技术的各种语言的运行容器。
有谱云为开发者提供分布式文件存储服务,用来存放用户的持久化存储的文件。用户可以通过API读取文件、写入文件、获取文件属性、取得文件列表等操作,开发者可以很方便的开发出类似于云存储的应用。
对于应用的图片、图标、用户头像等这样海量小文件,传统的文件存储存在访问缓慢,获取需要二次转发和包装等问题,有谱云为此专门提供了基于HTTP协议的极速海量小文件存储服务,开发商的应用可以通过应用的前端Javascript或者后端,直接使用HTTP接口存储小文件,然后直接通过HTTP协议获取小文件,无需额外包装开发,仅需应用存储其文件URL即可。
面向开发商,有谱云提供既简洁明了又务实实用的管理控制台,旨在帮助开发商简化其应用云化的运维工作,提升其工作效率,最终达到其应用快速云化,快速响应用户需求的终极目标。
为了解决传统关系型数据库在非机构化数据及分布式环境下的不足,有谱云引入了Redis高速内存NoSQL数据库,Redis集群方式部署、多分片,每个分片采用一主多从的方式,配合相应的SDK进行高性能,非结构数据的存储和使用。
有谱云为用户提供了丰富了技术服务,为用户屏蔽相关技术难题:
有谱云默认提供基于MariaDB数据库,为应用提供了完善的数据功能。同时,有谱云还提供了在线MySQL管理控制台(基于phpMyAdmin),这样开发者就能够非常方便的根据需要管理和创建其自己的数据库了。
此外,MariaDB采用多主模式,每个节点之间进行快速同步复制,充分保证数据库性能及数据的可靠性。
有谱云在上述通用数据库基础上还提供了直接支撑多租户的MariaDB数据库, 开发商可以利用这样的数据库非常方便地开发出互联网上面向众多企业的多租户应用产品,诸如我们的客户侎佧等都使用了此项技术。