我的Serverless实战——引领云计算的下一个十年(2),2024年最新我在美团大数据开发研发岗工作的那5年

培养自己的Serverless思维与认知

以前很多开发者都是采用的单体架构,为了保证服务的稳定性,只需要维护一台服务器及数据库就可以啦,但是随着业务的增长会面临两个问题,如果流量比较大,这个服务器可能顶不住这么大的流量,其次硬件啥的损坏也会导致整个系统瘫痪。

解决这个问题的办法就是使用负载均衡,分担各个服务器的压力。然后整个系统就有一定的水平伸缩能力,如果一台服务器坏了,其它的服务器也能正常运行,保证系统稳定运行。

随着业务的进一步增长,增加大量的开发人员去处理这种单体应用,就会出现大量的冲突问题,这个就需要管理者进行人工协调,公司整体研发效率比较低,后台大家想到一个好办法就是把这个单体应用分为一个个独立开发、测试及部署。每个环节都是独立而又有一定的联系,这个就是微服务的雏形。服务和服务之间采用API通信,这种微服务架构大大提升了研发人员的工作效率。

再到后来,估计大家都有所了解,如果从物理的角度思考这个问题就会发现分布式的一些困难与挑战,比如大家使用分布式服务及框架,使用一些Redis缓存、配置服务ACM以及分布式追踪系统等。这个微服务架构给运维也带来不少的难题,感觉运维大哥都快成全能底层人才了,以前运维只需要维护一个应用,现在估计一个人都得看几十个、几百个应用。对应用分发、自动化弹性等能力有一定的要求。

现在很多人都谈云计算,云架构,简单理解就是这个架构长在“云”上就是云架构。 有了应用分发的标准和生命周期的标准,云就能提供标准化的应用托管服务。在整个架构的演变的过程中,我们发现,研发运维人员希望用平台系统的去管理机器,而不是人去管理这些个玩意。这可能就是server is less.

Serverless的使用价值及常见的架构模式

我们抛去这些抽象的概念,看一下这个Serverless的使用价值主要有以下几点:

1.不用过多的关注服务器。

(Serverless平台具备自动识别故障,移除故障的能力)

2.自动弹性。

(Serverless平台自动及时稳定的实现自动弹性)

3.按照实际资源的消耗进行计费。

(Serverless模式下,按照实际消耗资源及使用存储进行计费)

4.更少的代码,更快的交付速度。

(Serverless提供成熟的代码构建发布、版本切换等特性,交付速度更快)

Serverless由开发者实现的服务端逻辑运行在无状态的计算容器中,它由事件触发, 完全被第三方管理,其业务层面的状态则被开发者使用的数据库和存储资源所记录。Serverless涵盖了很多技术,分为两类:FaaS和BaaS。

FaaS(Function as a Service,函数即服务)

FaaS意在无须自行管理服务器系统或自己的服务器应用程序,即可直接运行后端代码。其中所指的服务器应用程序,是该技术与容器和PaaS(平台即服务)等其他现代化架构最大的差异。

FaaS可以取代一些服务处理服务器(可能是物理计算机,但绝对需要运行某种应用程序),这样不仅不需要自行供应服务器,也不需要全时运行应用程序。

FaaS产品不要求必须使用特定框架或库进行开发。在语言和环境方面,FaaS函数就是常规的应用程序。例如AWS Lambda的函数可以通过Javascript、Python以及任何JVM语言(Java、Clojure、Scala)等实现。然而Lambda函数也可以执行任何捆绑有所需部署构件的进程,因此可以使用任何语言,只要能编译为Unix进程即可。FaaS函数在架构方面确实存在一定的局限,尤其是在状态和执行时间方面。

在迁往FaaS的过程中,唯一需要修改的代码是“主方法/启动”代码,其中可能需要删除顶级消息处理程序的相关代码(“消息监听器接口”的实现),但这可能只需要更改方法签名即可。在FaaS的世界中,代码的其余所有部分(例如向数据库执行写入的代码)无须任何变化。

相比传统系统,部署方法会有较大变化 – 将代码上传至FaaS供应商,其他事情均可由供应商完成。目前这种方式通常意味着需要上传代码的全新定义(例如上传zip或JAR文件),随后调用一个专有API发起更新过程。

FaaS中的函数可以通过供应商定义的事件类型触发。对于亚马逊AWS,此类触发事件可以包括S3(文件)更新、时间(计划任务),以及加入消息总线的消息(例如Kinesis)。通常你的函数需要通过参数指定自己需要绑定到的事件源。

大部分供应商还允许函数作为对传入Http请求的响应来触发,通常这类请求来自某种该类型的API网关(例如AWS API网关、Webtask)。

BaaS(Backend as a Service,后端即服务)

BaaS(Backend as a Service,后端即服务)是指我们不再编写或管理所有服务端组件,可以使用领域通用的远程组件(而不是进程内的库)来提供服务。理解BaaS,需要搞清楚它与PaaS的区别。

首先BaaS并非PaaS,它们的区别在于:PaaS需要参与应用的生命周期管理,BaaS则仅仅提供应用依赖的第三方服务。典型的PaaS平台需要提供手段让开发者部署和配置应用,例如自动将应用部署到Tomcat容器中,并管理应用的生命周期。BaaS不包含这些内容,BaaS只以API的方式提供应用依赖的后端服务,例如数据库和对象存储。BaaS可以是公共云服务商提供的,也可以是第三方厂商提供的。其次从功能上讲,BaaS可以看作PaaS的一个子集,即提供第三方依赖组件的部分。

BaaS服务还允许我们依赖其他人已经实现的应用逻辑。对于这点,认证就是一个很好的例子。很多应用都要自己编写实现注册、登录、密码管理等逻辑的代码,而对于不同的应用这些代码往往大同小异。完全可以把这些重复性的工作提取出来,再做成外部服务,而这正是Auth0和Amazon Cognito等产品的目标。它们能实现全面的认证和用户管理,开发团队再也不用自己编写或者管理实现这些功能的代码。

函数计算介绍及其应用

从用户角度,他需要做的只是编码,然后把代码上传到函数计算中。上传代码就意味着应用部署。当有高并发请求涌入时,开发者也无需手动扩容,函数计算会根据请求量毫秒级自动扩容,弹性可靠地运行任务,并内置日志查询、性能监控、报警等功能帮助开发者发现问题并定位问题。

函数计算是事件驱动的无服务器应用,事件驱动是说可以通过事件源自动触发函数执行,比如当有对象上传至OSS中时,自动触发函数,对新上传的图片进行处理函数计算支持丰富的事件源类型,包括日志服务、对象存储、表格存储、消息服务、API网关、CDN等。

除了事件触发外,也可以直接通过API/SDK直接调用函数。调用可以分为同步调用与异步调用,当请求到达函数计算后,函数计算会为请求分配执行环境,如果是异步调用,函数计算会将请求事件存入队列中,等待消费。

函数的测试与部署

服务是函数计算资源管理的单位,同一个服务下有很多函数,这些函数共享服务的网络 配置、权限配置、存储配置、日志配置。 服务可以对应成一个“应用”,这个应用由很多函数共同组成,这些函数具有相同的访 问权限、网络配置,日志也记录到相同的 logstore。这些函数本身的配置可以各不相同, 比如同一服务下有的函数内存是 3G,有的函数内存是 512M,有些函数用 Python 写, 有些函数用 Node.js 写。

开发流程

函数测试部分,Serverless稍微薄弱一点,软肋,这个调试一般可以采用云调试、命令行工具、VSCode 插件、无工具调试等方式,具体怎么调试我就不一一说明了,有兴趣的可以尝试一下。

至于部署,比较简单,我们可以使用在线部署、客户端部署(通过命令行工具、通过 VSCode 插件)。命令行工具的 - h 指令真的很棒, 无论使用什么指令,我们都可以通过 - h 查看到使用方法。

Serverless容器服务及部署

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

讲解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-8Szta4Xf-1713032412356)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,根据您的要求,我会为您制定一个5提升自己的计划,每一做一些具体的事情能够大幅度地提高您的技能和知识。 第一:2022 - 学习更深入的Java知识,包括Java 8的新特性和Java Web等相关技术。 - 熟悉并掌握Spring、Spring Boot、MyBatis等常用框架工具。 - 学习并掌握单元测试、集成测试、自动化测试等基本测试方法。 - 每周至少阅读一篇Java技术文章,并建立自己的博客记录所学所思。 第二:2023 - 学习分布式技术,如分布式事务与分布式锁等相关知识。 - 掌握分布式架构设计和实现、微服务和RPC等技术。 - 学习并试验Docker、Kubernetes等容器化技术。 - 每周至少阅读一篇面向架构师的技术文章,并关注前沿科技动态。 第三2024 - 深入学习算法和数据结构、设计模式等重要的计算机基础知识。 - 深入学习JVM原理、性能优化等高级Java技术。 - 掌握CI/CD、DevOps等相关工具和流程。 - 每周至少阅读一篇架构设计相关的文章,并扩展您的阅读范围。 第四:2025 - 学习云计算大数据等技术,如Hadoop、Spark等相关知识。 - 熟悉并掌握Serverless架构和容器编排技术。 - 掌握AI和机器学习等相关技术。 - 每周至少阅读一篇技术前沿的或者科技资讯相关的文章,并尝试利用所学在项目中实践。 第五:2026 - 参与到开源项目的研究与开发中去,提高自己的协作能力和项目经验。 - 学习更广泛、多面的知识,例如UI设计、产品经理、项目管理等。 - 加强人际关系,拓展自己的人脉,为自己的职业生涯做准备。 - 定期参加技术交流会议和培训班,学习交流其他公司的实战技术。 以上就是我为您制定的5提升计划,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值