热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

云原生架构演进与企业上云

点击上方蓝色字体,选择“设为星标”优质文章,及时送达过去的一段时间和一些架构师技术负责人聊天,云原生和企业上云是最近一段架构演进的一个常见话题,那么小公司到大型公司在上云和云原生上

点击上方蓝色字体,选择“设为星标”

优质文章,及时送达

云原生架构演进与企业上云

云原生架构演进与企业上云

过去的一段时间和一些架构师 / 技术负责人聊天,云原生和企业上云是最近一段架构演进的一个常见话题,那么小公司到大型公司在上云和云原生上有什么价值和收益呢。

云原生技术的里程碑

云原生架构演进与企业上云

云原生的定义

  • 云计算的本质:按需分配资源和弹性计算

  • 互联网业务特点:快速迭代,逻辑复杂,海量用户,流量突增,7*24小时高可用

上云的价值

  • 业务上,研发团队可以更聚焦业务逻辑,提升研发效率,快速交付系统。

  • 将技术层抽象到云原生层,技术组件的更新换代对业务架构透明,可以更快的进行技术换代而不影响业务架构。

  • 抽象的云原生层持续的组件服务演进,可以提供更好可用性,稳定性的基础设施。

  • 在资源利用率上,实现弹性伸缩,优化资源成本。

  • 衔接标准的CI/CD流程,持续交付软件。

工程师的价值

  • 拓宽技术视野,避免闭门造车。

  • 将掌握技能更好的发挥价值。

  • 输出优质组件,提供到云端,有更大的影响力。

云原生如何落地

可以基于公有云或私有云平台,通过云平台,云中间件,面向微服务,容器编排调度,及Devops流程优化等关键字进行整合,提升业务团队研发效率和质量,帮助业务降低风险,实现更快的交付。

传统的软件架构,不管是单体的还是SOA的架构,在整体架构设计上有很大一部分是趋同的,从上至下:

  • 用户层:pc / app / h5 等

  • 接入层:sso,wns,tgw等

  • 逻辑层:应用逻辑模块,订单,商品,配送,门店,供应链,营销等

  • 基础工具层:数据同步,数据中心,订单一致性,消息系统,音视频编解码

  • 存储层:IDC,Redis,DB等

  • 通用支撑层:支持端到端的监控,代码审计管理,数据统计可视化,监控告警,部署发布流程,自动化测试平台等

我们想一下,对以上通用常见的软件架构如何演化上云呢,存在哪些问题呢?

  1. 架构插件化设计不够,如果换了一个数据上报组件,所有服务都需要调整代码再进行发布。

  2. 历史原因,很多系统技术栈并不统一,一些内部RPC有多种协议,导致组件适配成本增加。

  3. 业务系统底层服务和业务逻辑耦合严重,导致对于服务组件复用困难,需要重复开发。

  4. 研发流程上,需要过多人工环节,会导致流程不规范。

  5. 一些技术公共组件,如视频流加解密,消息推送,监控告警等,需要做到对业务高度透明化。

  6. 容器化程度低,需要在虚拟机或物理机上消耗较多无意义的时间,比如扩缩容,权限审批等。

  7. 监控告警体系不完善,不便捷,如果调用链,日志系统不完善很难具体定位线上问题。

针对以上问题,我们可以得出云原生架构演进方向和需要提升的点。聚焦于微服务,中间件,DevOps这三个方向,结合云弹性来推动架构演进。

云原生架构演进与企业上云

优化微服务架构

建立服务开发规范,向云原生靠齐。主要原则遵循云原生12要素。

  • 一份基准代码,多分部署。

  • 显示生命依赖关系。

  • 将配置存储在环境变量。

  • 服务应作为松耦合后端资源。

  • 严格分离构建流程和运行流程。

  • 服务需向无状态进程演进。

  • 通过端口绑定对外服务。

  • 可通过水平扩展实现规模高并发。

  • 可快速启动服务并可优雅关闭。

  • 尽可能保证开发,测试,发布环境一致等价。

  • 使用原创日志流处理。

  • 后台管理任务当作一次性进程运行。

  • 设计出合理且兼容的API是首要任务。

  • 可以过滤测试和应用状态。

  • 采用OAuth2.0和RBAC授权实现应用安全。

云原生开发规范

  1. 统计的技术栈,包括语言,协议,开发框架等

  2. 外部只能通过ApiGateway才能访问

  3. 服务间只能通过RPC或消息队列通信

  4. 服务无状态,可以快速启动或关闭

  5. 框架对同类组件可插拔,更换具体组件不改变服务代码

  6. 基于代码生成器自动代码生成,基于Ci实现自动化交付与部署

  7. 尽量走远端配置,修改配置不用发布或重启服务

  8. 数据库,缓存组件按具体业务实现多租户访问

云原生架构演进与企业上云

  1. 架构调整上,很重要的一点是在接入层,统一ApiGateway,对接多端协议,转换为内部微服务协议,可以对API生命周期管理,限流,鉴权等统一管理。

  2. 逻辑层按业务划分,打薄到只有业务逻辑。

  3. 通用逻辑继续下沉,下沉到中台层,沉淀如评论,IM,CRM,搜索,UGC,Push系统,订单,商品,支付,结算等通用逻辑。研发同学可以对这部分业务更深挖,更沉淀。

  4. 再之下为容器层,将原有的二进制服务变为交付镜像。

  5. 中间件层使用通用的云上中间件。

  6. 通用逻辑监控告警,CICD打穿整个交付周期。

在完成了一些列的标准指定,架构演进,上云的流程需要有一个明确的迁移计划:

云原生架构演进与企业上云

借助一些工具看数据迁移的效果与质量,比如数据异构,关系数据库与缓存中间件,数据库binlog解析实现增量数据订阅与消费,数据不停机迁移,业务影响最小化。

云原生架构演进与企业上云

最后是完善Devops工具链,打通git,jenkins,k8s整个流程。

监控告警,对每层监控指标进行完善,生成调用链及图谱:

云原生架构演进与企业上云


推荐阅读
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • “自主设计与实施的故障注入微服务Sidecar,欢迎大佬批评指正!”
    “故障注入Sidecar“——为您的微服务注入故障以验证集群性能!由于导师和实验室师兄们的科研需要,本人专门以Sidecar的模式设计了一个用于错误注入的微服务模块。该模块可以与任 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • Kubernetes(k8s)基础简介
    Kubernetes(k8s)基础简介目录一、Kubernetes概述(一)、Kubernetes是什么(二& ... [详细]
  • 2019我的金三银四
    先讲一下自己的情况吧,二本学生,17年毕业,目前在一家跨境电商从事Java技术开发工作(不是阿里,没那么厉害),技术栈目前偏向于容器云、持续集成持续交付这一块,也就是SpringBoot、Kuber ... [详细]
  • 云原生SRE
    序言年底了,没有分手的朋友的赶紧分了,所谓新年新气象,年年不重样。去留无意,望看风卷残云。。。运维不会消失,但 ... [详细]
  • docker+k8s+git+jenkins
    docker+k8s+git+jenkins,Go语言社区,Golang程序员人脉社 ... [详细]
  • k8shelm官网:https:helm.sh点击charts:https:artifacthub.iopackagessearch?sortrelevance&page11.1h ... [详细]
  • php网站_十周后,62%的PHP网站将运行在一个不受支持的PHP版本上
    本文由编程笔记#小编为大家整理,主要介绍了十周后,62%的PHP网站将运行在一个不受支持的PHP版本上相关的知识,希望对你有一定的参考价值。 ... [详细]
  • kubelet配置cni插件_Kubernetes新近kubectl及CNI漏洞修复,Rancher 2.2.1发布
    今天,Kubernetes发布了一系列补丁版本,修复新近发现的两个安全漏洞CVE-2019-1002101(kubectlcp命令安全漏洞)和CVE-2 ... [详细]
  • mysqli预处理编译的深入理解【MySQL】
    数据库|mysql教程php教程,用户数据库-mysql教程bitsCN.com记得以前php点点通也写过mysqli的预处理的php教学,那时候只是看书乱写的,没懂原理,数月过后 ... [详细]
  • 本文|层面_Kubernetes概述
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Kubernetes概述相关的知识,希望对你有一定的参考价值。前言本文搜集大量关于Kuber ... [详细]
author-avatar
yjdnvb
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有