微服务和大数据支撑架构一体化
1
微服务、大数据、AI、移动、物联网、云计算是软件的革命,微服务支持devops敏捷开发,有利于开发效率提升和产品升级、运维,使用spring cloud开发微服务,部署在云平台上,对产品运行的数据通过大数据进行数据处理,通过分析分析业务数据和用户行为,达成产品运营,优化业务,节约成本,提高质量和效益,这是一个系统化的的解决思路,对产品一体化提供有力的支撑。
1.微服务介绍
微服务是目前最先进的架构设计思想,在许多国内外大互联网公司得到成功的应用,其核心是化繁为简、化整为零,把应用分解为小的服务模块进行独立开发。微服务的这一特点使其便于部署到容器,对整个开发、测试、运维都发生了革命性影响,有力地支持了devops开发,提高效率,便于维护升级和故障处理,带来了一系列优势。那么,微服务有哪些奥秘呢?下面从技术原理上进行剖析。
化整为零的思路不是开发一个巨大的单体式的应用,而是将应用分解为小的、互相连接的微服务。一个微服务一般完成某个特定的功能,比如下单管理、客户管理等等。每一个微服务都是微型六角形应用,都有自己的业务逻辑和适配器。一些微服务还会发布API给其它微服务和应用客户端使用。其它微服务完成一个WebUI,运行时,每一个实例可能是一个云VM或者是Docker容器。
Spring Cloud是微服务开发的优秀框架,在spring Boot的基础上进行开发,Spring Cloud 为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性Token、全局锁、决策竞选、分布式会话和集群状态)操作的开发工具。使用Spring Cloud 开发者可以快速实现上述这些模式。
2
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个总数不变,这样管理一个大型系统变得轻松和简单。
3
容器和微服务:完美的一对
可以将Linux 容器视为轻量型的虚拟机,从而可以更灵活地使用、更快速地继承和更容易地分发它们。Docker 是在这方面走在前沿的项目之一。自2012 年启动以来,Docker 团队(现在已是公司)提供了一种通过Linux 容器构建、打包和分发云本机应用程序的非常简单的方法。
容器与虚拟机有何不同?每个虚拟机(如下图中的左侧所示)运行自己的来宾操作系统实例,并提供它自己的库和二进制文件。容器(如右侧所示)是隔离的,它们共享
4
底层的主机OS 和库,只打包必要的应用程序二进制文件。
互通要求的是“可达、快速可达、安全并快速可达”。一个微服务内部可采用本地方式,而微服务之间采用service地址(无论内部怎么漂移伸缩,对外地址不变),对于公网上的调用,采用宿主机端口映射出去是个可选方式。
微服务的伸缩与漂移,需要与监控能力结合,动态设置容器的ip。K8S采用flanel能自动设置容器IP,自动维护pod集群,出现故障可自动启动pod,极大地提高了系统的稳定性,减轻了维护的负担。以漂移为例子,漂移有很多触发器,有因为故障的,有基于优化考虑的,比如像优化漂移这种,就要求定义很多维度,包括资源
5
微服务和大数据支撑架构一体化
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)