客户关系管理系统(CRM)核心功能的技术实现

2021-01-24 12:07
探索科学(学术版) 2020年11期
关键词:开源备份集群

青岛护适通医疗科技有限公司 山东 青岛 266101

CRM系统在国内推广实施已经二十余年了。为了规范管理、降低成本、提高竞争力,各家企业均纷纷上马该系统。随着技术的不断进步,CRM系统自身也在发生者深刻的变革。现就家电领域CRM系统的技术实现做一下浅显的探讨。

一、总体架构与设计方案

总体架构方案基于微服务的理念,前后端实现分离方案,结合Spring-Cloud实现分布式微服务,将每个微服务设计成无状态服务,可以借助于Kubernetes等具备弹性伸缩能力的基础平台,实现按需弹性伸缩,更好的应对不同模块的不用访问量带来的压力,同时降低运维等成本。

↑整体架构方案

二、View层

View为整个系统的“窗户”,属于用户的视图层,用户视觉效果的展示。View层采用Vue进行开发,使用蚂蚁金服开源的AntDesign模板风格实现Web端的设计,采用微信前端团队开源的WeUI库结合DCloud的uni-app实现移动端的开发,uni-app可以实现一套代码生成IOS、Android、微信小程序、支付宝小程序等多平台多形态的移动端程序。

三、Gateway

Gateway为整个系统的鉴权、授权和路由模块,每一次的前端的访问请求,都要经过Gateway的审核,首先验证用户是否已经登录,其次验证用户是否有权限访问当前的URI,然后再决定是否放行。

Gateway的方案采用SpringCloud生态体系中的Kong,Kong是一个云原生,快速,可扩展和分布式微服务抽象层(也称为API网关,API中间件或某些情况下的Service Mesh)。作为2015年的开源项目,其核心价值在于高性能和可扩展性。Kong积极维护,广泛应用于从创业公司到Global 5000以及政府组织等公司的生产,其特性如下:

Cloud-Native:平台不可知,Kong可以从裸机运行到Kubernetes。

动态负载平衡:跨多个上游服务负载均衡流量。

基于散列的负载平衡:使用一致的散列/粘性会话进行负载平衡。

断路器:智能跟踪不健康的上游服务。

运行状况检查:上游服务的主动和被动监控。

服务发现:在Consul等第三方DNS解析器中解析SRV记录。

无服务器:直接从Kong调用并保护AWS Lambda或OpenWhisk功能。

WebSockets:通过WebSockets与您的上游服务进行通信。

OAuth2.0:轻松将OAuth2.0身份验证添加到API。

日志记录:通过HTTP,TCP,UDP或磁盘记录对系统的请求和响应。

安全性:ACL,Bot检测,白名单/黑名单IP等……

Syslog:登录系统日志。

SSL:为基础服务或API设置特定SSL证书。

监控:实时监控提供关键负载和性能服务器指标。

转发代理:使Kong连接到中间透明HTTP代理。

身份验证:HMAC,JWT,Basic等。

速率限制:基于许多变量阻止和限制请求。

转换:添加,删除或操作HTTP请求和响应。

缓存:在代理层缓存并提供响应。

CLI:从命令行控制您的Kong集群。

REST API:Kong可以使用其RESTful API进行操作,以获得最大的灵活性。

地理复制:配置始终是不同地区的最新信息。

故障检测和恢复:如果您的某个Cassandra节点发生故障,Kong不会受到影响。

群集:所有Kong节点自动加入群集,使其配置在节点之间更新。

可扩展性:通过自然分布,Kong通过简单地添加节点来水平扩展。

性能:Kong通过扩展和核心使用NGINX轻松处理负载。

插件:可扩展的体系结构,用于为Kong和API添加功能。

四、业务模块

业务模块共分为六个,每个模块均为无状态服务,以便在单模块高压访问的时候实现弹性伸缩和负载均衡。

业务模块的开发框架为SpringBoot,SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外Spring-Boot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。SpringBoot所具备的特征有:

(1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;

(2)内嵌Tomcat或Jetty等Servlet容器;

(3)提供自动配置的“starter”项目对象模型(POMS)以简化 Maven配置;

(4)尽可能自动配置Spring容器;

(5)提供准备好的特性,如指标、健康检查和外部化配置;

(6)绝对没有代码生成,不需要XML配置。

五、缓存

缓存使用Redis Cluster,Redis单机负载能力官方数据能达到180k的QPS,在面对高并发的情况下有很好的支撑能力,并且集群模式下,其自带的高可用能力为大流量大并发场景提供了更好的支持。

六、DB层

DB层采用MySQL 8,采用一主两从的架构。Master负责主数据的读取和写入,Slave 1实时从Master中复制数据,做主从同步和读写分离(如果有需要的话),Slave 2作为延迟热备份,延迟一小时从Master拉取数据。

七、数据灾备

Redis集群中的数据为缓存数据,当Redis Node宕机后,Redis集群能够主动发生主从切换,实现整个集群的高可用。

MySQL使用KeepAlive进行监控,当发生主节点宕机的情况,自动触发主从切换机制,将Slave 1切换成主机,保证整个集群的可用性。另外,制定相关的数据灾备策略,每周一凌晨0点做Slave 1的全量备份,每周四、六凌晨0点做Slave 1的数据增量备份。以上仅为个人的一点浅见,希望能对企业有所帮助。

猜你喜欢
开源备份集群
浅谈数字化条件下的数据备份管理
创建vSphere 备份任务
Windows10应用信息备份与恢复
海上小型无人机集群的反制装备需求与应对之策研究
五毛钱能买多少头牛
2019开源杰出贡献奖
培育世界级汽车产业集群
一种无人机集群发射回收装置的控制系统设计
勤快又呆萌的集群机器人
大家说:开源、人工智能及创新