微服务实施需要明确每一步怎么做,可能存在的问题和解决思路、方法。如果能有相应的经验和理论指导,将会大大有助于我们设计和构建微服务体系。但由于目前大部分人员都是关注微服务开发框架或工具,甚少讨论微服务架构方法论。因此,进行微服务规划,在一个相对较高的层次来探讨、研究微服务的设计和实现显得尤为重要。理论方法论就象灯塔、导航,为我们指明了方向,虽然也会有这样那样的问题,但只要方向对了,就不会南辕北辙,总会到目的地的。 也基于这样的认知,我们在实施微服务的时候,基于相应的理论学习和经验实践,把微服务的生命周期过程关注的重点事项定义为:微服务规划、微服务构建、微服务协同、微服务测试、微服务部署发布、微服务运营、微服务治理、微服务下线。每项任务侧重点不同,实现的能力不同,共同完成微服务生命周期过程。 一、 微服务生命周期 微服务规划是在决定采用微服务之后对现有业务流程进行梳理,根据自身技术能力和特点选择合适的设计和构建方法论,规划和构建微服务所需资源和基础设施平台等。 微服务构建是基于微服务设计和构建方法论,逐步提取微服务组件服务,分步骤的实现整个微服务体系建设。 微服务协同设计,是指微服务间基于彼此的联系和依赖实现服务间调用和协作,共同完成业务应用逻辑功能。 微服务测试是微服务在测试环境构建测试域,利用测试挡板工具或服务完成微服务的各项测试,以满足业务部门提出的功能、性能、部署、安全等各项需求。 微服务部署是微服务达到生产就绪的条件下部署到生产环境,为微服务正式发布做好准备。 微服务发布是完成生产验证后正式对外发布服务,使服务可用。 微服务运营是向业务应用客户提供正常的服务的过程,记录并监控运行情况、计量计费、维护资源、修复缺陷、安全保证等。 微服务下线涉及微服务的版本管理、下线计划、下线提醒、替代方案、接口停用、服务关闭等事项。 微服务治理则是为保证微服务整个生命周期过程中微服务的正常运营协调所需人员、流程、资源及所采取的措施等,比如提供微服务接口服务、微服务安全、微服务监控以及微服务生命周期管理等,进行流程、人员、工具之间协作的一种方式。 微服务生命周期中的微服务规划、微服务构建、微服务协同、微服务测试、微服务部署发布、微服务运营、微服务下线、微服务治理等事项侧重点不同,实现的能力不同,共同完成微服务生命周期过程。同时微服务生命周期过程也是DevOps贯穿的过程,微服务的弹性、灰度、监控、治理、管理等需要依赖容器等基础设施平台的支撑。这样可以充分利用各种技术的优势来提升IT对业务变化的响应能力。 (一) 微服务规划 我们认为IT系统建设已经过了走一步看一步的阶段,当前需要对IT技术的选型和基础平台建设做出一个相对中长期的规划,这类似于战略层级,方向性的错误损失可能无法弥补。这也是我们关注规划的原因之一。 微服务规划的关键是对业务和技术的理解。梳理业务流程的目的也是为了加深对业务的理解,业务流程伴随着数据流程。但往往一个现实的问题是技术人员对业务都是一知半解,但业务系统建设通常由技术人员主导,所以结果往往不令人满意。所以我们强调从业务和数据的双向融合,业务从上而下,数据从下而上,根据业务考虑数据的产生节点、数据量、数据变化频率、SLA(负载、响应时间、最大并发请求)、存储需求、网络流量、局限性等,从而可以方便的在下个阶段构建数据物理模型。当然这并不容易,既要求对业务有深入的理解,也要求对技术有深厚背景和广阔知识面,能自主把控的专家参与并指导。 微服务规划也是基于资源整合的考虑,人力、技术、设施、工具、数据等等若能整合在一起,可以集中力量发挥整体优势。当前软件发展已经从单体-集成阶段过渡到了融合-平台阶段,服务化特别是微服务的思想使单体软件系统逐步消亡,代之以统一化平台,比如基础设施资源虚拟化平台、开发托管运维PaaS平台、业务数据中台和服务中台等,这些平台也不是彼此独立,而是协同成为一个支撑企业业务的大统一平台。平台以组件服务如同积木可插拔的方式构建,其扩展性、弹性、可维护性、开放性、标准化、可替换性等都是当前单体或集成软件无法满足的。 在融合-平台阶段,前台不同业务组、业务团队的运营需要通过云计算的多租户机制来保证,权限隔离、资源隔离、可扩展性、自治等由基础设施平台来支撑。可便捷的实现资源的重组和调配,敏捷响应业务快速变化需求。 (二) 微服务构建 不同问题需要不同视角来观察理解,需要全面的认知,我们不认为一种方式可以万能,所以可以尝试不同的方法来构建,从不同的视角、不同的层次来验证微服务构建的结果。 微服务实现可能更多需要考虑业务数据:数据量、数据存储、数据变化、频率以及局限条件等,然后确定数据库层实现或存储设计:单表、分区、分表、分库、分数据中心、分地域等,微服务逻辑的实现方式会影响到微服务的配置、部署、扩展、弹性等。 (三) 微服务协同 (四) 微服务测试 (五) 微服务部署 可生产部署的微服务我们要求是生产就绪的。微服务生产就绪要满足功能、性能、弹性、高可用、容错、日志、监控、文档可用等能力,根据业务场景的要求支持不同的部署方式。 (六) 微服务发布 微服务发布可能会有灰度的场景需求,也就是对于发布的新的版本功能引导部分流量过来,以便用实际的业务流量数据检验新的版本功能的正确性,确保整体业务应用的稳定,在初始灰度验证的时候若有问题,可以及时调整,以减少影响,若没有问题则逐步扩大流量,直到最后接管全部流量。 (七) 微服务运营 微服务运营要采取措施保证微服务提供的接口服务的正常运行,比如容错机制、负载均衡、备份、自动扩展,或者根据业务场景实施流量控制,或某些特殊情景下采取熔断机制等。 运营过程中出现的缺陷需要及时修复,通过的DevOps缺陷修复流程实现快速的迭代更新,保证业务应用不受明显影响。 (八) 微服务下线 微服务运营可以采用产品运营的方法,在新的版本发布之后,经过一段时间稳定运行之后就不再更新维护旧的版本,建议用户逐步迁移到新版本。这需要定义相应的微服务下线规则、流程和方式。 (九) 微服务治理 二、 DevOps协作 三、 容器云基础设施平台支撑 欢迎工作一到五年的Java工程师朋友们加入Java程序员开发: 854393687 |
|