【活动回顾】2023 年 1 月 Scala Meetup

第八期 Scala Meetup 于上周六顺利结束,三位 Scala 资深使用者与 2000+ 在线用户分享了三大话题:

  • Tubi 的 gRPC 演进之路
  • Scala 与函数式编程
  • 交互式笔记本中的 Scala

同时,应粉丝提问,大家也对“ Scala 入门和进阶路径、Akka 在分布式场景中的应用”等备受关注的问题进行了讨论。这里可下载演讲文稿。

欢迎关注比图科技公众号,了解 Scala 最新资讯及活动。也欢迎你在后台留言,申请加入 Scala 开发交流群!

Tubi 的 gRPC 演进之路

Tubi Scala Team & gRPC

来自 Tubi 的后端工程师张正来,首先介绍了 gRPC 诞生的背景和其主要相关特性。

gRPC 常应用于构建跨语言、跨平台的高性能微服务,其接口优先、传输高效以及兼容性良好等优秀特性令其成为云原生时代服务通信的事实标准,并且拥有谷歌背书,是 CNCF 的核心项目之一。

gRPC 主要有四种通信模式,可以根据业务的实际场景来灵活选择,分别是:

· 单向 RPC (unary/simple RPC)

· 服务端流式 RPC (server-side streaming RPC)

· 客户端流式 RPC (client-side streaming RPC)

· 双向流式 RPC (bidirectional streaming RPC)

正来还实机演示了一个简易的 gRPC HelloWorld 应用,并且对比了 gRPC 和其他通信框架的异同,列举了不同框架的 Pros & Cons,让我们对 gRPC 相比于其他框架比如 REST 和同为 RPC 框架的 Thrift 的特点有了很好的理解。

 随后,正来给出了 Tubi 使用 gRPC 的理由,也相当于是 gRPC 优秀设计点的总结:

· 面向服务定义而非资源定义,适合各种业务需求(更便于领域建模)

· 强类型约束,降低开发和维护成本,提高工程师生产力(符合 Type Safe 的设计要求)

· 多语言支持,不同团队可以根据业务需要选择更合适的编程语言(可以使用更多的工具)

· 不同团队可以通过集中的 ProtoBuf 代码库轻松的共享服务定义(便于团队对服务进行维护和统一建模)

· ProtoBuf 高效的序列化性能和较小的序列化体积(在 Akka 中,集群间也是使用 Protobuf 序列化 Whisper 信息)

· 原生支持 stream 操作,大数据量传输更加高效(流式处理在业务场景下真的很重要)

· 性能好,可支持高吞吐低延迟服务

· 社区活跃、生态快速成熟

· Kubernetes 紧密集成,可以使用 HealthCheck,服务发现等功能

Tubi Akka-gRPC 迁移

Tubi 内部使用 Scala 构建的服务是重度依赖 Akka 框架的,在 Akka-gRPC 成熟后,由于其出色的性能和实用的特性,Tubi 团队开始把其 gRPC 服务由 gRPC runtime 迁移到 Akka-gRPC。

正来也给出了相应的 Performance Benchmark,迁移 Akka-gRPC 能让系统在高负载时具有更好的性能和稳定性,当前阶段的主要收益是可维护性的提升。

关于 Akka 更换 LICENSE 的影响,正来表示 Tubi 会和 Lightbend 继续合作并使用 Akka 的相关服务。

—— 以上分享来自 Ken

通过正来的分享,我了解到了 Tubi 具体的 Scala 应用是怎么样的,是比较实际的一场分享,感觉比自己光看理论要好很多。

—— 以上分享来自 Alpha

Scala 与函数式编程

@袁洋

 先是介绍了由北京智源人工智能研究院孵化的同象项目—— AI + 中医的辅助诊断系统,为医生提供临床辅助诊断的帮助,优化效率和诊断正确率。在我看来,这是一个很有趣的应用点,而且是由 Scala 和 Typescript 开发的(看起来袁老师很注重 Type Safety)。

印象最深的是讲解项目整体架构时,给的标题是“范畴论理论支撑”,不知道是不是这里挖了一个小坑,引出后续演讲中,关于范畴论相关概念的分享。

 随后袁老师讲解了函数式编程的相关概念,让我们理解了为什么要管理副作用,怎样是函数式编程的最佳实践。

函数式编程是严谨的,它更像是一个处理问题的框架,来帮助我们更科学、有效地构建业务和应用。我们需要先明确数据和它们的格式;再定义不同数据之间的转换逻辑,也就是实现转换操作的函数;最后根据业务的逻辑,把这些函数串起来。

根据我个人的经验,在实现转换操作函数这一环节,可以先根据业务逻辑的大框架把主要的函数先定义出来,再逐层解耦,最后会发现核心函数可以由若干个小函数组成。

这样做的好处是能够使写出的组件拥有更好的组合性和逻辑的可复用性;对于副作用,我们需要把它们尽量推到逻辑的外层,先要最大化核心的逻辑层,最后再集中处理副作用。

试想一下,如果我们的一段核心代码中有 70% 以上的内容是关于拥有副作用的函数的处理逻辑,在对代码逻辑进行理解时,这将产生极坏的阅读体验,并且会显得很啰嗦,因为我们看到的几乎都不是我们想要的。可以有的做法是先把核心逻辑打通,最后再集中管理副作用。

袁老师提到这样的开发范式和 AI 自动编程会有很好的相关性,其实不难发现,通过函数式编程的方法向 AI 描述他所需要解决的问题是清晰的,这样或许在未来能够看到更多的 AI 应用帮助开发者提升效率( CodePilot 和 chatGPT 就是很好的例子,非常强大!);程序员在能实现更多的价值的同时,也能让自己的工作变得更有意义,而不是机械地进行重复劳动。

 接下来袁老师通过一个“盒子模型”,讲解了 Monad 以及 IO Monad 的概念。

袁老师的解释都很通俗易懂,最有趣的一个例子就是把 Monad 比作具体做某件事的事先计划,它也是一个盒子,里面装着要做的某件事和它的结果;但是计划的执行是充满变数的(拥有副作用,在不同的时间或者地点执行会有不同的结果);计划中的每个步骤都会产生一个新的盒子,但不会马上打开它,这个盒子里可能有副作用,但是我们同样知道里面可能有我们想要的东西,这使得我们可以以一种“假设”的状态完成我们的设计和实现,而最后去处理副作用。

计划的产生是纯函数,但计划的执行不是,我们通过 Monad,使得在设计时可以以纯函数的方式去实现,而同时保留对副作用的管理和控制能力。

 最后,袁老师快速地过了一下 Cats Library 中的 Type Classes,并且介绍了智源团队开源的 Flag Boot 微服务开发库和对比 Spring Boot 框架的 Benchmark,期待 Flag Boot 能够越来越棒!

—— 以上分享来自 Ken

袁洋老师的分享对我很有启发,用了一个新的比喻来讲解 Monad,感觉很形象,更理解了 Monad。

——以上分享来自 Alpha

交互笔记本中的 Scala

李枫老师的分享,让我知道了原来 Scala 可以被应用于这么多领域,了解了很多有趣且实用的 Scala 库,之前在工作中没用到过。老师对编程的热情和对专业的执着也很感染我!

——以上分享来自 Z

李枫老师的分享内容比较多,感觉研究得也比较深入,对我来说,因为之前没接触过,理解起来有挑战,但很好的是,李枫老师也分享了自己这么多年积累下来的文档,后面可以慢慢理解。

关于如何学习 Scala,李枫老师的分享给我的印象非常深刻。尤其是需求产生了学习的动力这一点,这个需求可以是业务、工作发展需求,也可以是个人兴趣想要拓宽边界。

—— 以上分享来自隔壁正在施工

Scala 在 Tubi 的应用案例

使用 Scala 和 Akka-Stream 打造一个完全响应式广告服务系统

使用 Scala 和 akka-stream 处理广告竞价

Scala Meetup 往期推荐

【活动回顾】2022年6月

【活动回顾】2021年1月

【活动回顾】2020年9月

【活动回顾】2020年4月

加入 Tubi 一起用 Scala 创建更好的服务!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15355.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3月1日第壹简报,星期三,农历二月初十

3月1日第壹简报,星期三,农历二月初十坚持阅读,静待花开1. 《2022年国民经济和社会发展统计公报》发布:全年国内生产总值超121万亿元,比上年增长3.0%,全国居民人均可支配收入中位数31370元,增长4…

“数智化 让经济复苏按下快进键” ——2023成长型企业商业创新峰会深圳第三站隆重召开

以“数智化 让经济复苏按下快进键”为主题的2023成长型企业商业创新峰会,第三站于3月10日在深圳盛大开幕。深圳不仅在经济领域具备着强大的竞争力,同时也在数智化方面拥有着巨大的发展潜力和活力。来自业界的专家学者、优秀企业家、生态伙伴及媒体代表共…

chatgpt+mj+did生成会说话的头像

chatgptmjdid生成会说话的头像 当我们有了 ChatGPT 生成的内容,有了 stable-diffusion、midjourney 或者 dalle2 生成的人像,如果还能让人像动起来,替我们朗诵或者播报一下 ChatGPT 的内容,不就是一个数字人了么? D-…

对比CahtGPT Bard Claude2对中文的理解

对比CahtGPT Bard Claude2对中文的理解 今天简单测试了一下目前这三个很火的模型对中文的理解能力 简单问题 鲁迅和周树人的关系 Bard CahtGPT Claude 介绍一下平凡的世界这本书 Bard CahtGPT

chatgpt赋能python:Python和Geany的完美结合——快速高效的编程助手

Python和Geany的完美结合——快速高效的编程助手 什么是Python? Python是一种高级编程语言,由荷兰人Guido van Rossum于1989年圣诞节期间创建。它具有简单易学的语法和清晰优雅的语言结构,并且非常适合快速开发应用程序和系统脚本。 Pytho…

用 ChatGPT 解答 2023年四川高考语文作文题 - 时间掌控的边界:自由与仆役的交织

光阴似箭,距离我当年参加高考,已经 23 年过去了。 虽然我接触 ChatGPT 还不到半年,但它已经深刻改变了我的工作和思考方式。我不知道 ChatGPT 的出现,是不是让我变得越来越懒,越来越离不开它了。 今天看到群里讨论起…

chatgpt赋能python:Python加入高考:重塑高考科目格局

Python加入高考:重塑高考科目格局 自2021年起,Python作为一门新兴的科目,已经正式加入中国高考科目之列。这一决定引起了广泛的关注和讨论,有赞成的声音,也有反对的声音。本文将为大家介绍Python加入高考的理由和影响…

让ChatGPT做当年的高考现代文阅读

最近ChatGPT火出天际,我突发奇想,如果用ChatGPT来做高考现代文阅读会怎样。 于是找到了当年非常火的一篇文章,叫《一种美味》,这个名字大家可能不太熟,但是提到其中一句话,你可能立马就想起来了。 「眼里…

十分钟编码实战springboot对接ChatGPT

Java后端 pom.xml添加ChatGPT的依赖 <dependency><groupId>com.unfbx</groupId><artifactId>chatgpt-java</artifactId><version>1.0.10</version><!--排除子依赖 slf4j-simple 不然会有冲突 --><exclusions><exclu…

浅尝对接 ChatGPT 与 DDD 工程

1. SpringBoot DDD 工程 MVC 架构与 DDD 架构简单对比 MVC 架构&#xff1a;老项目将 controller、service、manager、dao、bean 按照系统模块分在一起&#xff0c;随着项目发展每个包中对象逐渐膨胀&#xff0c;导致维护困难、bug 难查DDD 架构&#xff1a;新项目按照功能模块…

ERD Online 4.1.0对接ChatGPT,实现AI建模、SQL自由

ERD Online 是全球第一个开源、免费在线数据建模、元数据管理平台。提供简单易用的元数据设计、关系图设计、SQL查询等功能&#xff0c;辅以版本、导入、导出、数据源、SQL解析、审计、团队协作等功能、方便我们快速、安全的管理数据库中的元数据。 4.1.0 ❝ :memo: fix(erd): …

为什么职场中35岁之后很难找到合适的工作?

(点击即可收听) 为什么职场中35岁之后很难找到合适的工作 无论是初入职场还是,职场多年的老司机,都听过一个35岁危机的一个话题 无论是企业还是一些招聘者,针对35,甚至就是30的人,充满了不是这样,就是那样的偏见的理由 每个公司都喜欢有激情,有想法,有干劲的年轻人,无论哪个公司…

毕业季到底是去大厂还是去小公司

(点击即可收听) 毕业季到底是去大厂还是去小公司 相信很多人在选择大小公司的时候,会比较痛苦,外面的人想进去,里面的人想出来&#xff0c;至于选择大厂还是小公司 这是因人而异的,不同的阶段都可以有不同的选择 进大厂不一定就是对的,进小公司也不一定就是错的,学习东西,增长经…

字节跳动发布自研 Web 构建工具 Rspack

作者 | Rspack Team Rspack 是由 ByteDance Web Infra 团队孵化的基于 Rust 语言开发的 Web 构建工具&#xff0c;拥有高性能、兼容 Webpack 生态、定制性强等多种优点&#xff0c;解决了我们在业务场景中遇到的非常多的问题&#xff0c;让很多开发者的体验有了质的提升。 仓…

Windows 在美国采用率迅速下跌,只剩 57%,已至历史最低点!

整理 | 苏宓 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 流水的操作系统&#xff0c;铁打的 Windows。不过&#xff0c;自 2018 年微软宣布分拆 Windows 部门拥抱 AI 之后&#xff0c;作为一项服务的 Windows&#xff0c;其王者地位还能持续多久&#xff0c;也…

微软 Bing 日活用户破 1 亿, 每日约 1/3 用户与 Bing Chat 交互

整理 | 朱珂欣 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 自 ChatGPT 横空出世以来&#xff0c;新一轮 AI 之战就似乎在无形中被燃起。 2 月 8 日&#xff0c;微软召开了一场闭门媒体发布会&#xff0c;推出了全新的、 由人工智能驱动的 Bing 搜索引擎和 Edg…

终于,GPT-4 将于下周问世!不仅能搞文字,还支持视频

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 作为当前全球最火的生成式 AI&#xff0c;ChatGPT 仅用了 3 个月&#xff0c;就几乎搅动了整个科技圈&#xff0c;人们不断惊叹于 ChatGPT 的强大——但微软和 OpenAI 想要的&#xff0c;显然不至于此…

美团以 20.65 亿人民币收购光年之外

美团于香港联交所发布公告&#xff0c;称已完成光年之外境内外主体 100% 股权的收购&#xff0c;收购价约为 20.65 亿人民币 。 此前&#xff0c;光年之外联合创始人王慧文因身体原因&#xff0c;离岗就医及休养。美团在公告中对于并购的解释是&#xff0c;通过收购事项获得领先…

5000亿美元「flag」后,微软 CEO 暂缓员工加薪,现发帖感谢大家,员工:“发钱才实际!”...

整理 | 朱珂欣 出品 | CSDN程序人生&#xff08;ID&#xff1a;coder_life&#xff09; 打工人眼里&#xff0c;没有比「加薪」更能直击心巴&#xff01; 据 Business Insider 报道&#xff0c;本周四&#xff0c;微软 CEO Satya Nadella 为感谢员工在 2023 财年里做出的贡献…

Rust 商标政策引争议,开发者:请放弃这个糟糕的政策吧!

整理 | 王子彧 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 近日&#xff0c;拥有 Rust 和 Cargo 商标的 Rust 基金会正在起草制定一项新商标政策提案。因提案中包含禁止在 Rust 工具或用 Rust 编写的软件的名称、域名或子域名中使用 Rust&#xff0c;引起了争…