孢子框架(微服务)成熟度模型.

  笔者并不是微服务领域大牛,但当第一次看到微服务的概念就发现这是社会发展的必然趋势。记得在以前看到过一本书,现在也忘记是哪一本,里面提到将来社会的商业结构将不存在所谓的沃尔玛之类的大超市,而是以微商(个人提供商业服务)为主,那至少是在十年前的提法,当时都感觉不可思议,但现在看来还真有这个趋势。这个趋势和微服务的诞生其实都基于同样的原理:服务结构发展与社会发展同步。社会生产力要发展必须最大化个人的生产能力,所以社会整体生产力的提高的过程也是人的个性化发展的过程。以战争为例,封建社会军队使用人海战术,现在高科技战争使用小团队作战,以将来的科技可能单兵作战都可以灭掉一个国家。

  说到这里我们也能看出微服务和传统SOA的区别,就是天猫商城和沃尔玛的区别,也是提倡单兵作战的现代军队和传统军队的区别,也是个体承保责任制和人民公社的区别。这种类比很多,因为基本上将现代的制度和之前的制度做一下对比都会得到类似的结果,这是社会发展的必然。

  提到微服务,笔者也不提倡小公司小团队一上来就搞淘宝一样的大框架,也搞不了。但也并不是像某些人讲的那样没有必要一开始就用,那在观念上已经落后于别人了。孢子框架提倡从一开始就实施微服务,甚至没有经验的团队也可以这么做。微服务框架的实施将伴随公司的发展而不断发展,顺应现代社会公司的发展速度。

  

  假设我们开始创业,建立一个小的电子商务公司,只有几个开发人员,那么可以实施孢子框架第一阶段。第一阶段的孢子微服务框架和传统三层架构的单体应用唯一的区别就是以契约型的RPC接口代替进程内API调用。如果说单体应用框架像是家族企业制度(成员间关系密切),那么微服务框架就是现代企业制度。家族企业也可以做大做好,但那是极个别情况,现代企业制度提倡以契约和制度来约束企业中人与人之间的协作,更容易发展和壮大。除了以RPC代替API调用服务外,孢子框架第一阶段提倡进行初步的业务模块初步拆分,这其实跟微服务没有关系,这是基于单一职责的原则,便于将来扩展。对于互联网+的应用,在孢子框架实施后的第一阶段,估计支持100万的用户量是没问题的。

  现在公司壮大了,假设用户已经过千万,原有的系统已经超负荷,那么可以实施孢子框架第二阶段。第二阶段主要是体现在使用缓存、异步处理、NoSQL来提升系统性能,以及进行系统监控。由于我们一开始就使用无状态的远程服务接口,所以在第二阶段服务处理也可以进行水平集群扩展。由于扩展了很多个服务器,所以现在需要系统监控及性能监控等功能对服务状况进行监控。如果说第一阶段只是使用了基本的页面缓存功能(如nginx缓存),那么第二阶段需要大量使用缓存功能来最大限度的提升系统性能,这包括高速缓存集群及分布式缓存集群等。第二阶段的用户量可能会产生请求的峰值,因此增加异步处理进行削峰。第二阶段也对应SOA成熟度模型的第二阶段,服务治理需要提上日程。

假设公司业务发展很快,两年内用户过亿,日均PV几千万,此时可以实施微服务的最终框架了,也是现在各个IT巨无霸们提到的服务框架。此时因为用户和业务大量扩展可能已经存在众多服务,可以使用高并发网关或服务框架来协调各个服务。此时某个服务的性能瓶颈可能会影响整个系统,因此某些服务可能采用C++、Go等语言来进行改进。此时服务间的事务协调成为难题,可能需要专门开发一套管理分布式事务的机制和制度。对于实时性比较的高的行业,比如金融,此时可以使用分布式实时计算集群进行数据处理。此时由于服务众多、服务器众多,需要基于docker的自动化部署机制来支持服务的快速部署。

时间: 2024-11-19 09:00:48

孢子框架(微服务)成熟度模型.的相关文章

孢子框架-微服务架构

微服务架构(Microservices ),是一个新的概念,但不是一项新的技术.看一下那些大型互联网企业,早在十年前就在使用类似架构,再看一下游戏行业,大型网游的架构从一开始就是采用类似的架构,这起码要追溯到二十年前. 微服务架构和传统SOA架构最大的区别是个性化(非通用化).传统SOA所采用的方式跟它的起源有关系,传统SOA是由IBM等大公司倡导的,它们把某些通用的企业应用封装成某类服务,然后卖给企业,企业就可以使用该服务,并且企业可以购买不同的服务进行组合.而互联网公司就不同了,它们从开始就

微服务操作模型

这里并不是介绍微服务概念,如需要了解微服务,可以阅读Fowler-Microservices文章.本博客假定我们已开始使用微服务解耦单体应用,用来提升可部署性和可扩展性. 当我们在系统范围内部署大量的微服务时,一个新的挑战产生了,单体应用部署时不会发生.这篇文章将针对这些新的挑战,在系统范围内部署大量微服务时定义一套操作模型(operations model). 这篇文章分为如下几个部分: 前提条件: 扩展: 问题: 需要的组件: 参考模型: 下一步: 1. 前提条件 当在系统范围内需要部署大量

企业级工作流解决方案(三)--微服务消息处理模型之服务端处理

1. Json-Rpc 2.0 参考地址:https://www.jsonrpc.org/specification JSON-RPC是一个无状态且轻量级的远程过程调用(RPC)协议,它允许运行在基于socket,http等诸多不同消息传输环境的同一进程中.其使用JSON(RFC 4627)作为数据格式,它为简单而生. 请求对象 发送一个请求对象至服务端代表一个rpc调用, 一个请求对象包含下列成员: jsonrpc指定JSON-RPC协议版本的字符串,必须准确写为“2.0” method包含所

企业级工作流解决方案(四)--微服务消息处理模型之消息传输通道

消息传输通道我这里只定义了3种,即:localInvoker,HttpInvoker,TcpInvoker,根据实际的情况,还可以进行扩展,比如消息队列,不过这都是后话了,先重点描述一下这3种方式. LocalInvoker 本地调用直接构造请求参数,直接调用服务端的JsonRpcProcessor服务处理执行服务处理过程,这个不多说. HttpInvoker 即执行http请求处理过程,由于.net framework和.net core的运行机制有所不同,处理方式也有所不同,但最终都落到服务

企业级工作流解决方案(六)--微服务消息处理模型之与Abp集成

身份认证传递 对于Abp比较熟悉的朋友应该对他里面的用户身份认证比较熟悉,他是通过实现微软提供的权限认证方式实现的,用户登录身份信息存储在System.Security.Claims.ClaimsPrincipal里面,但是用户的身份信息如何在不同的服务之间传递呢,不可能每一个服务都必须实现这套身份认证吧?比如我们请求调用过程如下: Portal站点获取用户信息没有问题,但如何传递到调用的其他微服务呢? 这在之前文章中提到的传输Header就起到了作用,有两种方式可以处理,第一种我们可以直接把a

企业级工作流解决方案(五)--微服务消息处理模型之客户端端处理

微服务的服务端已经启动起来了,服务消费者怎么知道服务在哪个地方,通过什么方式调用呢,分布式如何选择正确的服务器调用服务? 这个就涉及到服务发现.服务健康检查的问题了,很多微服务架构的做法都是通过消息队列来实现的,消息队列天生就支持发布订阅功能,服务有变化之后,发布通知,每个消费者更新状态,还涉及到更新服务的metadata信息,同时还涉及到服务健康检查等等一系列功能,其实这些地方是非常容易出问题的地方,但是对于规模流量不是特别巨大的企业,这部分职责可以进行转移,服务的发现就直接通过配置文件实现,

Spring Cloud-新一代Web框架微服务

序言 springcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合.基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易. 通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统. 下面主要用图来理解下各个组件的概念吧 都有哪些优秀组件 Eureka 功能:服务注册与发现,各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉

.Net微服务实践(一):微服务框架选型

微服务框架 微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地完成该任务.在所有情况下,每个任务代表着一个小的业务能力. 以往我们开发应用程序都是单体型,虽然开发和部署比较方便,但后期随着业务的不断增加,开发迭代和性能瓶颈等问题,将会困扰开发团队,微服务就是解决此问题的有效手段. 那么我们在具体实践落地微服务时,我们又需要做什么?一个微服务框架到底又有什么

微服务系列(一):微服务架构的优势与不足

微服务在当下引起广泛关注,成为文章.博客.社交媒体讨论和大会演讲的热点:在 Gartner 的 “Hype Cycle” 上排名也非常靠前.与此同时,在软件社区也有人质疑微服务并非新事物.反对者认为微服务只是 SOA (Service Oriented Architecture)的二度包装.然而,无论是追捧还是质疑,微服务架构拥有巨大优势,尤其是它让敏捷开发和复杂的企业应用交付成为可能. 本系列包含 7 篇文章,介绍了微服务的设计.构建和部署,并与传统的单体架构进行了比较.本系列将分析微服务架构

微服务分布式电商

近些年分布式框架很是火热,目前国内使用最多的框架是阿里的Dubbo体系架构,最近也有很多公司转型到Spring Cloud的怀抱,还有一部分选择自建分布式微服务架构.  本片博文主要讲述开发者使用自建的方式搭建微服务框架,主要目的是为了让开发者在底层实现上面更加详细的了解微服务原理. 本文以一个电商平台用自建分布式微服务架构为线索来讲解,代码中包含了自建微服务框架中众多核心模块代码:服务注册--服务发现--服务调用--服务隔离--服务熔断.详细代码已经上传gitHub了,地址:https://g