文档库 最新最全的文档下载
当前位置:文档库 › 微服务和大数据支撑架构一体化

微服务和大数据支撑架构一体化

微服务和大数据支撑架构一体化
微服务和大数据支撑架构一体化

微服务和大数据支撑架构一体化

微服务、大数据、AI、移动、物联网、云计算是软件的革命,微服务支持devops 敏捷开发,有利于开发效率提升和产品升级、运维,使用spring cloud开发微服务,部署在云平台上,对产品运行的数据通过大数据进行数据处理,通过分析分析业务数据和用户行为,达成产品运营,优化业务,节约成本,提高质量和效益,这是一个系统化的的解决思路,对产品一体化提供有力的支撑。

1.微服务介绍

微服务是目前最先进的架构设计思想,在许多国内外大互联网公司得到成功的应用,其核心是化繁为简、化整为零,把应用分解为小的服务模块进行独立开发。微服务的这一特点使其便于部署到容器,对整个开发、测试、运维都发生了革命性影响,有力地支持了devops开发,提高效率,便于维护升级和故障处理,带来了一系列优势。那么,微服务有哪些奥秘呢?下面从技术原理上进行剖析。

化整为零的思路不是开发一个巨大的单体式的应用,而是将应用分解为小的、互相连接的微服务。一个微服务一般完成某个特定的功能,比如下单管理、客户管理等等。每一个微服务都是微型六角形应用,都有自己的业务逻辑和适配器。一些微服务还会发布API给其它微服务和应用客户端使用。其它微服务完成一个WebUI,运行时,每一个实例可能是一个云VM或者是Docker容器。

Spring Cloud是微服务开发的优秀框架,在spring Boot的基础上进行开发,Spring Cloud 为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性Token、全局锁、决策竞选、分布式会话和集群状态)操作的开发工具。使用Spring Cloud 开发者可以快速实现上述这些模式。

2.容器云介绍

Docker是运行微服务的最佳解决方案,容器+微服务是一个革命。Docker实际上是一个应用容器的引擎,可以让开发者非常方便地把自己的应用以及这个应用所需要的所有依赖都打进容器镜像当中,且具有可移植性,能够部署到任何服务器上。项目基于Docker构建,如果把封装的微服务比喻成集装箱的话,k8s则提供了一个大轮船,装载了所有集装箱,为微服务运行提供一个稳定的运行环境,用户也可以在此基础上进行管理。这里就可以享受到很多云端服务的优势。

微服务采用Kubernetes管理Docker,多个应用系统通过Docker形成集群,Kubernetes可以简单有效地管理各个集群。Kubernetes的基本单元是Pods,用来定义一组相关的Container。Kubernetes的优点是可以通过定义一个Replicationcontroller来将同一个模块部署到任意多个容器中,并且由Kubernetes 自动管理。比如定义了一个Apache Pod,通过Replicationcontroller设置启动100个Replicas,系统就会在Pod创建后自动在所有可用的Minions中启动100个Apache Container。并且轻松的是,当Container或者是所在的服务器不可用时,Kubernetes会自动通过启动新的Container来保持100个总数不变,这样管理一个大型系统变得轻松和简单。

容器和微服务:完美的一对

可以将Linux 容器视为轻量型的虚拟机,从而可以更灵活地使用、更快速地继承和更容易地分发它们。Docker 是在这方面走在前沿的项目之一。自2012 年启动以来,Docker 团队(现在已是公司)提供了一种通过Linux 容器构建、打包和分发云本机应用程序的非常简单的方法。

容器与虚拟机有何不同?每个虚拟机(如下图中的左侧所示)运行自己的来宾操作

系统实例,并提供它自己的库和二进制文件。容器(如右侧所示)是隔离的,它们共享

底层的主机OS 和库,只打包必要的应用程序二进制文件。

互通要求的是“可达、快速可达、安全并快速可达”。一个微服务内部可采用本地方式,而微服务之间采用service地址(无论内部怎么漂移伸缩,对外地址不变),对于公网上的调用,采用宿主机端口映射出去是个可选方式。

微服务的伸缩与漂移,需要与监控能力结合,动态设置容器的ip。K8S采用flanel 能自动设置容器IP,自动维护pod集群,出现故障可自动启动pod,极大地提高了系统的稳定性,减轻了维护的负担。以漂移为例子,漂移有很多触发器,有因为故障的,有基于优化考虑的,比如像优化漂移这种,就要求定义很多维度,包括资源

均衡维度、宿主机特性维度、标签配置变更维度等,需结合多维打分对微服务进行合理调度。

网络故障是非常常见的问题,为此,需要给物理机配置4块网卡,2个千兆网卡bound在一起,用于内部管理操作,2个万兆网卡bound在一起,用于外部业务访问,从而有效地加强了网络的稳定性。

3 微服务与devops

微服务和docker,非常适合devops开发,一个image把开发、测试、部署、运维全流程打通,有利于自动化测试,一键部署,有效地提升效率和质量。实现企业级DevOps,有很多方式和着手点,比如最常用的就是从持续发布开始。而我们更聚焦企业的全生命周期,实现基于微服务架构的以下15个:

?IAM:身份识别与访问管理,通过OAuth能力,一次登录,全网通行

?SPM:软件产品管理,DevOps平台的核心管理对象:产品。以产品维度为入口,管理包括产品的多版本,每个版本拥有多个组件,组件之间、组件与第三方产品之间的依

赖关系等

?SCM:软件配置管理,主要是应用配置的管理,在编译打包时通过autoconfig技术,注入到最终部署包

?SRM:软件资源管理,资源,即上述产品的运行实例,所以持续发布等都是有SRM发起

?SEM:软件环境管理,企业环境千差万别,SEM屏蔽了异构环境的差异性,让上游系统及业务能够松耦合的运行

?QAF:质量保证反馈,这个系统负责收集全生命周期的数据反馈,为后续优化演进提供重要依据

?UMC:统一监控中心,主要收集日志及资源运行信息,通过计算分析,形成相关报表,同时与告警中心对接,风险异常准实时提示

?VCS:版本控制系统,默认集成GIT

?CI:持续集成系统,默认集成Jenkins

?BPR:二进制仓库

?DPR:可部署包(镜像)仓库

?PM:项目管理系统,可集成redmine或wiki,目前平台是自己实现的

?IM:团队间即时通讯系统

?TM:租户管理系统

?MKT:云市场,平台最终期望作为中间平台,通过市场打通内容提供者与最终用户

微服务对devops 开发提供良好的支持,代码和配置统一管理,通过镜像编译、发布、测试、部署运行,显著地提升了开发效率,简化了繁琐的流程,是一个重大的突破。

4.微服务事务处理框架

结合目前事务处理的精华,我司开发了太极分布式事务处理框架TJDPH,采用可靠消息服务和补偿处理机制,巧妙地运用数据库的事务处理能力,对服务操作结果进行判断,调用应用系统自身的事务处理功能,从而有效地解决微服务的分布式事务处理问题。通过使用缓存,解决服务调用的冥等性和消息的冥等性,在事务处理时,采用异步并行调用对应的服务,提高了性能。TJDPH是一个非常优秀的框架,优势在于提高了应用的成功率,自动进行分布式事务处理,事务处理速度快,提高了数据的一致性,把对事务的处理由不可控变为可控,在事务处理时,采用异步调用服务,可以提高效率。对需要人工处理的故障可一键完成,简单快捷,实现事务处理的自动化,框架提供SDK,开发使用方便,高效实用,可以支持任何微服务架构的项目,而且可以运用于任何其他项目,是一个业界领先的世界级成果。

5大数据处理

开发运营平台收集产品运行数据,采用hadoop、hbase、spark、tenserflow等先进的大数据和人工智能AI技术,存储海量数据,保存所有数据、文档、资料,并采用机器学习对数据进行挖掘,使用贝叶斯算法、神经网络算法等先进技术开采数据金矿,提高数据的价值,便于优化产品,提升性能,创造性地提升产品功能和性能。

大数据需要成百上千的计算机高速运算,采用k8s提供docker容器,动态提供大量的容器支持大数据的计算,为大数据的实用提供强劲有力的支撑,而且对微服务提供良好的支持,节约成本,提升效率和质量。

6 公共基础平台设计

公共基础平台(PAAS)是一个系统架构科学合理、开放互联的应用服务平台,提供基础的功能,可以复用到所有产品,提高开发效率,节约成本,提升质量。不仅能解决数据互联互通问题,消除信息孤岛,实现资源整合与共享;而且未来能够灵活地应对需求发展,可以根据需求的发展变化,在此平台上快速开发建设丰富多样的应用,同时保证这些应用有机统一,集成创新,发挥最大效益。

基础平台提供统一门户、单点登录、用户权限管理中心、统一数据中心、统一认证中心、运维管理中心、消息推送中心、配置管理中心、统一注册及验证、统一注销、报表服务、统一会话、元数据、日志、缓存及通用基础功能等功能,通过先进的REST API 方式为产品提供有力的支撑,提高产品的整合能力,形成一个有机的生态系统。

采用开源的Kubernetes、ranchor、docker、etcd、marathon、mesos等开源容器及负载均衡和任务管理等技术,实现先进的PAAS平台。

统一管理服务、安全服务、数据管理、建设标准、相关规范与法规体系,避免管理混乱;通过云服务中间件和云聚合中间件实现信息共享与交换,实现统一用户认证,权限管理,单点登录;统一、开放的信息展现层(云门户、虚拟化社区);提供基础软件和通用服务,并提供标准接口,可通过无代码开发工具和代码开发工具,快速开发,适应应用变化需求,为持续发展奠定技术基础。

7.微服务的价值

每个服务都很简单,只关注于一个业务功能。

每个微服务可以由不同的团队独立开发。

微服务是松散耦合的。

微服务可以通过不同的编程语言与工具进行开发

微服务、敏捷以及DevOps是同一理念的不同方面,把我们所做的事情拆解成小且可管理的条目,并且分而治之,可以使大型公司如同小公司一样行动敏捷。围绕微服务来组织整个公司,让三到五人的自治团队为一个或多个服务负责,让这些团队自己决定需要使用的技术和方法。

更小的代码库可以让程序员更加专注,并且与产品客户有更投入的关系,这样程序员就能够对工作有更明晰的认识和更积极的动力。与用户联系紧密后会得到更快的反馈,程序员可以更及时的发现产品所暴露的缺陷以及应当去实现的新功能。

采用微服务架构之后,即使有大量的服务同时宕掉,用户可能也察觉不到。系统拥有更强大的容错能力,每个可能出错的服务都不会承担过多的功能,所以不会影响产品的使用。

微服务利于DevOps开发、自动化测试,运维并将所有服务merge到一个工程团队

中,微服务架构支持快速持续持续交付流程,利于故障的快速排出

总之,采用先进实用的微服务技术开发产品,使用spark、tensorflow实现大数据和人工智能学习,使用Ranchor、K8S构建容器支持微服务和大数据的运算,打造公共基础平台,充分复用,降低成本,提高效率和质量,用以上先进的技术培训员工,全面提升公司的核心竞争力,为公司的腾飞插上翅膀。

相关文档