11月@@28-29日@@,由中国社会科学院信息化研究中心和北京国脉@@互联@@信息顾问有限公司联合举办的@@“2018智慧中国@@年会@@”在北京隆重召开@@,以@@“数据@@赋能@@ 智慧中国@@”为主题@@,共有来自@@全国部委@@、省@@、市@@、区县电子政务@@@@、智慧城市@@@@、大数据@@主管领导@@、行业专家@@、企业代表@@、主流媒体千余人参会@@。

  本文系国脉@@技术总监@@潘超巧@@于@@11月@@29日@@上午在@@“2018智慧中国@@年会@@”分论坛@@--“微服务@@与数据@@赋能@@平台@@构建与实践研讨会@@”上的演讲@@,内容通过@@现场速记整理@@,未经本人审核@@。

blob.png

【国脉@@技术总监@@ 潘超巧@@】

  伴随着容器化的日@@臻成熟@@,微服务@@逐渐成为软件@@开发的主流形态@@,大量的分布式@@、领域驱动设计的微服务@@被快速开发和部署@@,服务间呈现出搭积木的能力@@,使不同的业务通过@@重新组合数个微服务@@@@,就能实现新的业务场景@@。被越来越多的开发者推崇@@,很多互联网@@行业巨头@@、开源社区等都开始了微服务@@实践@@。阿里@@巴巴@@、华为@@、腾讯@@、360等很多互联网@@公司都采用了微服务@@开发实现业务场景@@。

  一@@、什么是@@微服务@@@@

  有些人认为微服务@@是@@@@“微信服务@@”的缩写@@,因为现在微信比较火@@,其实不是@@@@。微服务@@,是@@一@@种软件@@架构的形式@@。在这个架构中@@,微就是@@@@“微小@@”的意思@@,在这个架构中@@,复杂的应用程序是@@由多个小而独立的进程组成@@,每一@@个进程通过@@独立于语言@@的接口进行@@相互交流@@。这些服务较小@@、高度解耦@@且专注于完成一@@个小任务@@, 使得用模块化方法建设系统更容易@@,降低开发难度@@、增强扩展性@@、便于敏捷开发@@。

  下面我列了微服务@@的几个特点@@:①微服务@@有一@@套服务治理的解决方案@@,服务之间不耦合@@,可以@@随时加入和剔除服务@@。②拥有独立的基础组件@@,业务单一@@@@、易于维护@@。③安全@@机制@@,微服务@@系统有一@@个完整的安全@@机制@@@@,包括用户验证@@、权限验证@@、资源保护等@@。④每一@@个独立的微服务@@都能够集群化@@,且具有负载均衡的能力@@。⑤微服务@@的服务与服务之间@@,是@@通过@@@@HTTP协议或消息组件通信的@@,具有容错的能力@@。

  二@@、为什么使用微服务@@@@

  那么我们@@为什么要使用微服务@@呢@@?我们@@可以@@先看一@@下左边这个单体结构@@,一@@旦项目@@、功能变多@@,系统的耦合度也会逐渐增高@@,出现故障时无法隔离@@;系统复杂@@、错综交互@@,改一@@个功能@@,往往整个系统都需要修改@@;同时多套系统时@@,是@@重复地去制造各种轮子@@,比如软件@@系统@@、数据@@库@@、中间件等@@;是@@一@@个完全封闭的架构@@,升级和迁移的成本也非常高@@。

  微服务@@做到了一@@个解耦@@@@、故障降级熔断保护措施@@,就像@@保险丝一@@样@@;采用了模块化开发@@,开发运维一@@体化@@,通过@@持续集成@@、持续交付@@、全自@@动化地进行@@部署@@;具有扩展性@@、高可用@@,在升级扩展中可以@@做到不中断业务@@。

  简单来说@@,微服务@@在应用中有四@@个好处@@:①每个模块都是@@独立部署的@@,所以@@@@简单灵活@@。②每个服务专注和专业于它的内容@@,可以@@高效@@、可靠地去做到相应的服务@@;同时每个小模块@@、小服务都可以@@由一@@个小团队来负责@@。③微服务@@做到了单体的解耦@@@@,把耦合度降下来后@@,高内聚@@、更容易扩展@@。④采用微服务@@架构@@,开发语言@@没有限制@@,你可以@@在这个服务里采用@@Java语言@@,在另一@@个服务里采用@@PHP语言@@,或者@@Python等其他语言@@@@,且开发工具也不受限制@@。

  传统单体的开发模式@@,从计划到开发有许多个模块@@,在技术部门统一@@进行@@编译@@、测试@@、发布@@,采用微服务@@的开发模式后@@,编译可以@@由不同的小团队来进行@@@@,因而多个部门就会形成一@@个线条状的结构@@,可以@@走三@@条线@@,再加上持续交付@@的@@、自@@动部署的@@、多个环境的更新部署@@,从理想化的角度来说@@,十个团队每年可以@@做到十万次@@部署@@。

  三@@、微服务@@模块化开发的好处@@

  模块化到底有哪些好处呢@@?其实我们@@可以@@把模块化当作一@@个拼装的形式@@:①模块可插拔@@,就像@@USB接口一@@样@@,需要时插上@@,不需要时就拔除@@,不会产生相应的问题@@。②故障隔离@@,每个模块都可以@@用一@@个分支去创建@@,不会造成代码之间的冲突@@。③解耦@@,在模块中增加或修改功能@@,只会影响当前模块@@,不会影响整个应用@@。④动态部署@@,在运行时把模块部署到应用中@@,快速修复故障@@,提高发布@@效率@@。⑤平台@@系列@@,成为行业一@@流大数据@@平台@@@@,每个平台@@提供@@1-2项特色优势数据@@服务@@。⑥多版本@@部署@@,可以@@在运行时同时部署某个模块的新旧版本@@@@,进行@@AB TEST。⑦减少资源消耗@@,通过@@部署模块的方式减少应用数量和机器数量@@。

  原来分步式架构在部署时比较麻烦@@,随着科技的发展@@,Docker技术应运而生@@。Netflix云@@架构总监@@Adrian Cockcroft 说过@@“微服务@@和@@Docker的结合是@@一@@种颠覆@@”。通过@@Docker技术的独立性@@、颗粒度@@、快速创建和销毁及完善的管理工具@@,可以@@实现微服务@@的快速部署与扩容调度@@。我们@@现在做的项目@@,编程完成把@@JAR包打出来后@@,通过@@一@@个配置文件扔到@@Docker服务器上@@,阿里@@Docker云@@、有容云@@@@,丢上去运行@@,整个分布式会自@@动完成@@。微服务@@架构和@@Docker技术的结合@@,可以@@解决很多问题@@,譬如正在运行的一@@个项目@@,CPU和内存是@@正常的@@,突然用户访问@@量增大之后@@,通过@@容器技术@@,会自@@动响应@@,将两个容器扩容为三@@个@@,从而降低@@CPU的消耗量@@。

  我的建议是@@@@,政府数据@@体系平台@@架构可以@@采用微服务@@架构@@@@。当前政府系统@@/软件@@数量多@@、标准体系复杂@@,还有很多配套系统之间存在重复的功能@@,系统之间耦合度比较严重@@,升级迁移的时候成本非常高@@,应用场景@@、参与的角色非常多@@。所以@@@@,大平台@@@@、大系统需要采用微服务@@架构@@来解决这些问题@@。

  四@@、微服务@@开发框架@@

  我们@@可以@@看一@@下当前主流的微服务@@框架@@:第一@@个是@@我们@@国脉@@采用的@@Spring Cloud,它是@@一@@个基于@@Spring Boot实现的云@@应用开发工具@@,它为基于@@JVM的云@@应用开发中的配置管理@@、服务发现@@、断路器@@、智能路由@@、微代理@@、控制总线@@、全局锁@@、决策竞选@@、分布式会话和集群状态管理等操作提供了一@@种简单的开发方式@@。

  第二@@个就是@@@@Dubbo,阿里@@巴巴@@公司开源的一@@个高性能优秀的服务框架@@,使得应用可通过@@高性能的@@ RPC 实现服务的输出和输入功能@@,可以@@和@@ Spring框架无缝集成@@,但目前从社区的活跃度来说@@,Spring Cloud更活跃@@,阿里@@的一@@些公司也在用@@Spring Cloud。第三@@个是@@刚刚出来的一@@个微服务@@架构@@--LSTIO,是@@ Google、IBM、Lyft首个共同联合开源的项目@@,提供了统一@@的连接@@,安全@@,管理和监控微服务@@的方案@@。

  接下来讲一@@下典型的微服务@@架构@@,是@@通过@@@@轻量的@@http协议关联各个服务之间的关系@@,通过@@服务注册与发现的机制@@,加上消息队列@@,来访问@@各类型数据@@库@@@@,包括运维监控@@、实时认证等@@。这是@@基于@@K8S容器集群的微服务@@架构@@,是@@应对大系统的@@,包括自@@动部署服务@@、灰度发布@@服务@@、自@@动水平扩展服务@@、集群内负载均衡服务等@@,可以@@看到它采用多个数据@@库@@@@、多个缓存服务器等@@等@@。

  五@@、基于微服务@@架构的赋能平台@@实践@@

  (一@@)标准规范@@

  下面讲下我们@@当前在做的一@@个赋能平台@@实践中的一@@些针对技术采用的标准规范@@@@。标准规范@@这块我们@@分为六个层面@@:基础设施@@、数据@@采集@@、数据@@存储@@、数据@@处理@@、应用支撑@@、门户展现@@。基础设施@@包括了存储的设施@@、机房@@、计算机服务器等@@@@;数据@@采集@@,包括离线采集@@、实时采集@@、手工录入等@@;数据@@存储@@包括分步式数据@@库@@@@、内存数据@@库@@@@、关系数据@@库@@@@;数据@@处理@@包括数据@@交换@@、清洗转换@@@@、比对等@@,因为数据@@入库后要保证数据@@质量@@,需要相关平台@@支撑@@;最后到应用决策@@,通过@@手机端@@、web端把相关内容展示出来@@。

  (二@@)运维及安全@@管理保障@@

  运维安全@@管理保障方面@@,包括移动设备监控@@、移动应用管理@@、web应用监控和数据@@库@@中间件监控等@@。

  (三@@)技术路线@@

  我们@@走的技术路线@@的整体结构主要包括开发技术@@@@、模型标准@@、运行环境@@、开发管理@@:①开发技术@@,主要是@@@@J2EE,结合微服务@@的高效性@@;②模型标准@@,就是@@我们@@仓颉数源在做的元数据@@标准@@,保证字段内容标准@@,加上跨语言@@的@@XML技术标准@@;③运行环境@@,包括容器技术@@、HTTP服务器等@@;④开发管理@@,开发运营一@@体化@@、可视化开发等@@。从而保证我们@@赋能平台@@的稳定运营@@。

  (四@@)API网关接入@@-安全@@

  我们@@通过@@@@API网关来保证系统的安全@@@@,因为所用接口@@、访问@@、用户都是@@先通过@@@@API网关来访问@@我们@@的各个服务数据@@@@,API网关在我们@@整个架构中起到了非常重要的作用@@,包括统一@@接入@@、流量管控@@、业务隔离@@、安全@@防护等@@,其中它们各司其责@@。

  (五@@)功能结构@@

  最后是@@我们@@微服务@@赋能平台@@的功能结构@@@@,包括了数据@@源@@、数据@@汇集@@、数据@@分析@@、数据@@应用四@@个层面@@。数据@@源层@@,就是@@说数据@@从哪来@@,一@@个是@@外部采集@@,包括我们@@公司@@7大平台@@@@采集录入的数据@@@@,还有一@@个是@@数据@@交换@@,我们@@OA系统里存在的一@@些数据@@@@,通过@@接口打通进行@@获取@@,此外还有合作共享资源和其他数据@@@@;这些数据@@拿到后@@,我们@@进行@@质量检测@@,包括编目@@、转换@@、对比@@、清洗等@@;再到数据@@分析@@层@@,进行@@可视化@@、聚合统计@@、关联分析@@、全文检索@@、模型训练@@、DSL分析引擎等技术操作@@;最终到应用层@@,进行@@运维管控@@,可以@@给公司提供趋势预测@@、业务分析等服务@@。我们@@国脉@@已基于微服务@@开发完成或正在进行@@重构的产品有@@IEP(智慧赋能平台@@@@)、仓颉数源数据@@元公共服务平台@@@@、数据@@基因@@5.0版本@@、国策数据@@库@@等@@。

  最后我总结一@@下@@,微服务@@可以@@为平台@@@@整合提供强大的支撑@@;通过@@微服务@@的架构理念@@,可以@@为平台@@@@、组织@@、不同技术团队之间的融合@@,提供一@@个很好的技术框架基础@@;通过@@模块化的开放模式@@,大幅提高产品的可靠性@@、可拓展性@@;通过@@与@@Docker容器的结合@@,可以@@实现分布式项目的快速部署与搭建@@;通过@@一@@体化运维和持续集成@@、持续交互@@,可大大降低运维成本@@。我们@@国脉@@正在努力@@,应用微服务@@架构做出更多@@产品和解决方案@@。谢谢大家@@!

  附@@:国脉@@,是@@领先的大数据@@治理@@和数字政府@@专业提供商@@。创新提出@@“软件@@+咨询@@+平台@@+数据@@+创新业务@@”五@@位一@@体服务模型@@,拥有数据@@基因@@和水巢@@DIPS两大系列几十项软件@@产品@@,长期为中国智慧城市@@@@@@、智慧政府和智慧企业提供专业咨询@@规划和数据@@服务@@,广泛服务于信息中心@@、大数据@@局@@、行政服务中心等政府客户@@、中央企业和金融机构@@。自@@2004年成立以@@来@@,已在全国七大区域设立@@20余家@@分支机构@@、5大技术研发基地@@,服务客户@@2000余家@@,执行项目@@5000余个@@,连续多年开展中国政府网站@@@@、智慧城市@@@@、互联网@@+政务@@、营商环境@@等公益评估评选活动@@。被业界誉为中国信息化民间智库知名品牌@@、电子政务@@优选咨询@@机构@@,国内首倡智慧政府理念@@,首创智慧城市@@@@@@、数据@@治理@@、互联网@@+政务@@评价体系@@,首推数据@@资产普查@@、全口径数据@@资源目录@@、数据@@元标准化@@、数源确认与供需对接@@、最多跑一@@次@@@@事项梳理@@、营商通等产品@@,信息资源编目@@、公共数据@@普查等业务全国占有率和影响力名居榜首@@。

  福利大放送@@:《数字政府@@周刊@@》、《数字政府@@白皮书@@2.0》、《第八届@@(2018)中国智慧城市@@@@发展水平评估报告@@》、《第四@@届中国@@“互联网@@+政务@@”50强优秀实践案例评选研究报告@@》、《首届@@(2018)中国营商环境@@评估报告@@》可通过@@电子政务@@智库公众号及微店在线购买@@,欢迎订购@@。

blob.png

微信扫一@@扫即可购买@@!

责任编辑@@:hongqiong