基于微服务架构的客户关系管理系统的研究

2018-11-07 11:37:30 电脑知识与技术2018年21期

孙秀玲

摘要:以往信息系统软件堆积在单独的系统中,存在可扩展性差、可靠性低和维护成本高的问题。虽然SOA服务被引入到后期阶段,但由于SOA使用总线模式,因此这种总线模式会与特定的技术堆栈一起回收,并与特定的技术堆栈紧密相关。通过将应用程序和服务抽取到更小的应用程序和服务中,它可以更容易地改进和扩展,从而提高应用的高并发和高应用。作为在云中部署应用程序和服务的新技术,微服务已成为当今最新的热门话题。关于微服务器的讨论主要集中在容器或其他技术是否可以很好地执行微服务。公司和服务提供商正在寻找更好的方式将应用程序应用于云环境,它将是微服务的未来方向。

关键词:IT行业;SOA服务化;微服务

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)21-0115-03

传统的客户关系管理系统的实现方式是所有服务端逻辑都集成在一起,这样的结构导致系统的扩展性差,可靠性不高,维护成本高。虽然有的引入了SOA服务化,但是,由于SOA使用总线模式,这种总线模式与某个技术堆栈紧密耦合,例如J2EE等特定技术堆栈紧密相连。这导致许多公司的现有系统难以对接,交换周期太长,成本太高,新系统稳定性的收敛需要一些时间。最终 SOA 看上去很美,但却被认为是企业级奢侈品,中小公司都望而生畏。本系统是基于我国中小企业的管理现状,基于微服务架构研发出来的,扩展性好,可靠性高,维护成不高,技术栈不受限,例如,客户微服务最初是用java编写的。现在我们想要将客户的微服务改为nodeJs技术。这完全是可能的,而且由于担心只是客户的逻辑,所以技术更换的成本将会降低很多。所以如果研发成功,达到预期的目标,必定受到我国中小企业的欢迎。

微服务架构是一种基于云中部署应用程序和服务的新技术。关于微服务的大多数讨论集中在容器或其他技术是否可以很好地实现微服务,并且API应该成为焦点。微服务可以在他们自己的程序中运行并且可以通过“轻量级设备和HTTP型API进行通信”。关键是服务可以在自己的程序中运行。通过这个,我们可以区分服务公开和微服务架构(在现有系统中分部一个API)。在服务公开中,许多服务可能受到内部独立进程的限制。如果这些服务中的任何一个需要添加某个功能,则该进程必须缩小范围。在微服务体系结构中,只需将所需功能添加到特殊服务而不影响整个过程。本文就基于微服务架构的客户关系管理系统进行如下研究:

1 主要研究内容、拟解决的技术难点和关键技术

1.1 主要研究内容

1)微服务架构的研究;

2)客户关系管理系统的原有服务拆分粒度的研究;

3)微服务分布式事务的研究;

4)设计实现适合客户关系管理系统的微服务架构。

1.2 拟解决技术难点

1) API Gateway(客户端如何访问这些服务):传统的开发方法,所有的服务都是本地的,可以直接调用UI,现在可以按功能划分为独立的服务。客户端UI如何访问他的服务。后台有N个服务,前台需要记住管理N服务。因此,通常在后台会有N个服务和UI之间的代理或API网关。他的功能包括:

提供统一的服务门户,使微服务对前台透明;

整合后台服务以节省流量并提高性能;

提供API管理功能,如安全性,过滤和流量控制;

2) 服务调用(如何在服务之间进行通信):因为所有的微服务都是独立运行在不同机器上的独立进程,服务之间的通信是IPC(inter process communication),并且有许多成熟的解决方案。现在基本上最常见的是方法:

REST(JAX-RS,Spring Boot);

RPC(Thrift, Dubbo);

异步消息调用(Kafka, Notify)。

同步呼叫相对简单且一致,但容易引发问题,性能体验稍差,特别是长时间的呼叫级别。异步消息方法在分布式系统中具有特别广泛的应用范围。他不仅可以减少呼叫业务之间的耦合,还可以缓冲呼叫,确保消息积压不会冲洗被呼叫者,同时保证呼叫。派对的服务体验将继续实现其自身的功能没有被背景表现放慢。

3) 服务发现(有多少服务查找):在微服务体系结构中,每种服务通常具有多个副本,并通过Spring Cloud的Ribbon进行负载均衡。服务随时可能脱机,并且可能会响应临时访问压力以添加新的服务节点。服务如何相互感知?服务如何管理?这是服务发现的问题。微服务通过SpringCloud的Eureka进行注册。当服务上线时,服务提供商将其服务信息与注册中心(或类似框架)一起注册,并通过心跳保持长链接以实时更新链接信息。可以通过SpringBootAdmin对注册中心的服务进行监控(服务的内存占用情况,日志级别等)。服务调用者访问Eureka,通过服务名称找到相应服务使用服务。

4) 分布式微服务下的session问题 : 在分布式架构中,由于服务是跨域访问,所以session很难做到共享,要想共享session,其中一种比较理想的方案则是将session信息存储在redis缓存中。只需在maven的pom文件中加入相关依赖即可使用。

1.3 关键技术

本次研究选用了当今比较成熟的springboot和springcloud作为开发架构,Springboot微服务开发架构,提供了展现、依赖注入、持久化、嵌入式容器、日志、缓存等常用功能,Eureka主要是实现服务注册发现,Ribbon主要实现负载均衡,Hystrix主要是服务的延迟和容错。ZUUL主要是提供动态路由功能。

2 项目拟采取的研究方法(或技术工艺路线、实施方案),以及预期达到的目标、主要技术、經济指标和水平

2.1 项目拟采取的研究方法

?