ldquo;墙高基础高,虽然一定会失去。rdquo;在构建数字企业大厦工程中,基础软件的重要性不言而喻。但对于各行各业来说,面向传统经营模式设计的基础软件已经难以支撑数字业务的创新,只有汲取专业团队经验,缩短基础软件升级探索的时间,才能排除后顾之忧投入业务和管理的数字化可以全力应对全球大环境的风险和行业的不确定性。

2022年04月15日-16日,ldquo;深入基础软件,构建新型数字基rdquo。为主题的第一届DIVE全球基础软件创新大会在网上举行。本次大会由InfoQ主办,以基础软件领域内容最丰富、前沿、最具技术性的行业大会为目标,成为基础软件领域的风向标。网易数帆的两位资深架构师,翁扬慧和向东应邀参加本次大会,分别进行了题为《网易数帆在混合微服务架构下的统一管理实践》和《面向未来的分布式存储设计》的演讲网易数帆分享了网易在支撑业务和服务行业客户过程中沉淀下来的数字化基础软件创新经验。

通过整合服务治理解决技术碎片问题

翁扬慧介绍了混合微服务技术架构的存在背景以及目前面临的问题,介绍了统一管理需要解决的核心问题和难点,提出了遗留历史业务如何优雅地从框架升级到服务网格的思路网易数分享帆如何通过产品设计使微服务统一管理更加优雅。

自微服务最初作为架构设计模式提出以来,十多年来,微服务技术已广泛应用于企业的商业架构设计。从开发框架的技术选择来看,Dubbo和Spring Cloud是目前主流的两大Java语言微服务开发框架的选择,但有些企业基于私有的内部框架,有些企业并没有完全微服务化。

由于技术更新不断重复,业务快速发展,需要引入新技术来应对复杂的业务场景,使得业务技术架构在演进过程中面临技术的ldquo;碎片化rdquo;问题反映在多个方面。

1.微服务框架难以统一管理,Java在企业级应用开发中仍占有最大份额,无论使用Spring Cloud还是Dubbo、gRPC等甚至是专用开发框架存在服务管理需求,不同微服务框架之间如何实现相互发现,如何进行统一管理是许多企业团队面临的痛问题。

2.异种语言难以统一管理,针对不同的业务场景,使用不同的开发语言往往更能发挥语言特性的优势,如使用C++开发高性能、低延迟的业务,使用Python开发人工智能,开发数据分析类应用这些异种语言的应用也需要进行统一的管理,如提供流量管理、安全控制等能力;

3.中间件难以统一管理,不同的微服务技术选择存在不同类型的注册中心,同时存在例如配置中心、认证中心,以及MySQL、Redis、ES、Kafka等多种通用的数据和消息类中间件如何进行有效的统一管理,实现云化效率,智能运行维护也是业务团队的要求之一

4.运行环境难以统一管理,随着云原生技术的发展,从物理机到虚拟机再到容器化的应用运行环境变迁正在成为标准的演进路线,企业的业务配置也从私有云、共享云、混合云的模式发展,从资源弹性伸缩、解决业务在灾害保障方面的要求,不同的基础环境,也需要在业务层进行有效的屏蔽差异,统一统治。

此外,还有一般的基础技术组件,在业务展开架构方面需要更统一、标准化的设计要求,反映在不同技术架构中的不同维度、各个层面。商业研发团队往往致力于商业开发以支撑商业发展,因此伴随着技术演进过程的各种技术债务存在,也是当前企业在数字化转型升级过程中面临的痛点。

网易数帆轻舟微服务团队在多年的内外客户支持过程中,特别是在微服务和云本地技术领域,积累了大量经验和最佳实践,并沉淀了面向企业层面的微服务统一管理平台。通过行业领先的无侵入性微服务管理技术、双引擎多模式统一管理、中间件PaaS化管理等,解决企业在架构升级过程中面临的技术难题通过提供一站式微服务平台控制台,帮助企业用户进行最小的改造,使用成本快速实现业务的统一管理,从而使业务团队更加关注专业领域的业务开发,提高企业整体的研发效率实现成本优化。

此外,翁扬慧在此次分享中,轻舟微服务团队指出,近年来在金融行业做了很多优秀的案例,总结并沉淀了金融行业的经验。通过提供全站式分布式技术能力基础,以及两地三中心、异地多活等业务结构支撑能力,帮助传统金融企业实现核心业务分布式技术改造升级,从而消除IOE,最终实现全栈技术国产化、实现自主可控的终极建设目标。

面向未来的分布式存储设计

向东网易数结合帆开源云本地软件定义存储软件Curve的开发背景,应用场景介绍了分布式存储架构的最新发展,如何通过合理的设计达到设计目标、存储优化细节以及Curve的发展方向和进展等。Curve是一种分布式存储系统,包括Curve BS分布式块存储系统和Curve FS分布式文件存储系统两部分,目前Curve BS在公司内广泛使用,Curve FS正在发展中。

随着存储和计算分离的趋势不断加剧,越来越多的云依赖于存储和计算来应用分离的体系结构。存储隔离可实现计算和存储资源的灵活扩展,并可深入优化资源以根据需要进行分配。Curve是为了满足存储分离的需要而诞生的云本地存储系统,具有高性能、容易操作、云本地的特征。

网易数帆选自我研究Curve存储系统主要有三个原因:

1.缺少代码量少、可自主控制的统一分布式存储系统,Ceph代码量达到100W+,要完全熟悉、掌握非常困难

2.现有开源存储系统出现故障时,对上层应用影响大,运行维护难度大,Ceph采用强一致性协议,当系统出现故障时,导致I/O频繁抖动

3.现有的开源存储系统无法在通用硬件下提供更高的性能来满足核心应用场景的需求。

易运维的主要核心课题是如何有效提高系统的可用性和可靠性,当系统出现故障时,在保证数据一致性的同时,可以将故障的影响降到最低。为了实现CurveBS的易运维目标,网易数帆采用了RAFT协议。使用RAFT协议,不仅可以保持数据完整性,还可以减少写入I/O的响应延迟,而且大多数复制副本复制请求只会恢复正常,从而表明数据写入成功。

为了提高数据的可靠性,网易数帆在拓扑结构上采用了故障区域的概念,同时在数据分布方面使用了copyset算法,保证了故障发生时数据丢失的概率最低。当存储系统在线升级时,采用特殊的客户端设计来保证存储系统的在线升级。

为了达到CurveBS的高性能目标,三大板斧主要是降低底层I/O的写入放大,提高I/O数据的吞吐量率,降低I/O的延迟。网易数帆通过使用ChunkFilePool事先制作文件池的方式减少I/O的写入放大,使用DataStrip数据条纹以Raid那样的方式提高数据的吞吐量率,使用zerocopy减少I/O数据复制的开销。

与CurveBS相比,CurveFS需要面对更复杂的负载和更广泛的应用场景。例如,性能和容量并存的机器学习场景、快速跨云弹性发布的业务场景、低成本大容量需求的业务、中间件冷热数据的自动分离、S3和POSIX的统一访问需求等。

网易数帆方案首先在元数据级保证文件元数据的性能和空间线性可扩展性,使用RAFT协议保障系统故障时的数据一致性和可用性,使用多层cache提高数据和元数据服务的性能。目前CurveFS已经支持底层的S3对象存储,可以对外提供POSIX兼容的文件服务,网易数帆存储团队还在进行优化CurveFS性能、支持CurveBS块存储访问的开发。