• 关于

    云原生好处

    的搜索结果

问题

使用阿里云云原生架构的好处?

使用阿里云云原生架构的好处?...
Pony马 2021-01-14 15:22:19 1 浏览量 回答数 1

问题

【百问百答】《云原生架构白皮书》(下)

291阿里巴是如何看待架构企业战略视角? 292企业战略中业务战略与 IT 战略之间的关系是什么? 293阿里巴是如何看待架构业务发展视角? 294业务连续性诉求主要包括了什么?...
Pony马 2021-01-15 14:47:31 1 浏览量 回答数 0

问题

【百问百答】《云原生架构白皮书》(上)

# 注:问题中对回答答案有疑问欢迎指出,我会尽快修改 1为什么需要云原生架构? 2什么是云原生架构? 3云原生架构的发展背景是什么? 4云原生架构与传统架构有什么区别ÿ...
Pony马 2021-01-15 14:47:23 996 浏览量 回答数 1

交互式分析 Hologres 新购特惠

Hologres 32核首月888元体验

问题

【百问百答】《阿里云云原生数据湖体系全解读》

1、为什么说数据湖是大数据和 AI 时代融合存储和计算的全新体系? 2、阿里云云原生数据湖体系有什么优势? 3、数据湖存储OSS是什么? 4、阿里云云原生数据湖加速是什么? 5...
Lee_tianbai 2021-01-08 15:32:48 10 浏览量 回答数 0

回答

我们把 Knative 和阿里云做了深度的融合。用户还是按照 Knative 的原生语义使用,但底层的 Controller 、Gateway 都深度嵌入到阿里云体系内。 这样既保证了用户可以无厂商锁定风险地以 Knative API 使用云资源,还能享受到阿里云 基础设施的已有优势。首先是 Gateway 和云的融合,直接使用阿里云 SLB 作为 Gateway,使用云产品 SLB 的好处有:  云产品级别的支撑,提供 SLA 保障;  按需付费,不需要出 IaaS 资源;  用户无需承担运维成本,不用考虑高可用问题,云产品自带高可用能力。除了 Gateway 组件以外,Knative Serving Controller 也需要一定的成本,所以 我们把 Knative Serving Controller 和阿里云容器服务也进行了融合。用户只需要拥有一个 Serverless Kubernetes 集群并开通 Knative 功能就可以基于 Knative API 使 用云的能力,并且用户无需为 Knative Controller 付出任何成本。
1358896759097293 2021-03-24 13:58:06 0 浏览量 回答数 0

问题

if 和 while 的区别

为什么 不用if. 使用while 的好处是什么,哪位朋友分析下? 来源:云原生后端社区 https://www.yuque.com/server_mind/answer...
Atom 2020-04-25 16:13:29 1 浏览量 回答数 1

问题

【百问百答】《云原生架构白皮书》(中)

145阿里云Servles是怎么计费的? 146Servles 中最具代表性的产品形态是什么产品? 147函数计算是什么Servles技术? 148使用函数计算有什么困难? 1...
Pony马 2021-01-15 14:47:27 401 浏览量 回答数 1

回答

有几种情况下,可以考虑视图:数据量大,查询性能慢,可以考虑通过 es 构建视图;数据来源的表太多,组装起来比较复杂,或者是查询条件分散在多张表里。视图是为了应对查询,不是为了数据简单化,相反,会复杂化。还有一层含义就是 cqrs 里的操作和读取分离,分离的好处就是不让查询的复杂度污染业务逻辑。 来源:云原生后端社区
Atom 2020-04-25 15:01:39 0 浏览量 回答数 0

回答

建议很简单,跟着趋势走。 趋势是什么,就是云计算,直接一点就是,要去做跟云相关的岗位。 仔细关注下技术趋势的发展,你会发现,现在很火的一些概念,比如Serverless、FaaS、边缘计算、弹性计算、云原生、IoT等等,甚至是我们耳熟能详的Docker容器、K8S、机器学习、AI等等,它们基本都跟云计算相关。 这些很多都是在云计算大趋势下衍生出来的新技术,而且因为依赖于云计算提供的基础设施,相互之间又有紧密的联系。 说的严格一点,这些技术只有在云上、甚至是公有云上,才会发挥作用和价值,脱离了云计算,这些技术没有任何意义。 因为,云计算带来的最大的好处就是“按需索取”,也就是我们说的弹性,进而带来成本上的最优化。 如果我们自己机房里还维护着上千台设备,都是我们自己的成本,说实话,再弹性也没多大意义,因为不解决实际的成本问题。 再就是,到了机器学习领域,特点是周期性地需要大量CPU和GPU资源,并不是持续需要,所以如果还是延续老的思路自己采购,这个成本就大了去了,对于一般企业根本不现实。 况且有时候还要考虑资源在不同区域分布的问题,比如边缘计算,一个普通企业搞一个机房还可以,但是要管理和维护很多机房,就不太现实了。 所以,不难理解,未来的技术趋势,一定是跟云计算相关的,这个是大势,不可逆。
淡味丶依然 2021-02-07 15:03:48 0 浏览量 回答数 0

回答

代码结构发生巨大变化 云原生架构产生的最大影响就是让开发人员的编程模型发生了巨大变化。今天大部分的编程语言中,都有文件、网络、线程等元素,这些元素为充分利用单机资源带来好处的同时,也提升了分布式编程的复杂性;因此大量框架、产品涌现,来解决分布式环境中的网络调用问题、高可用问题、CPU 争用问题、分布式存储问题 …… 在云的环境中,比如“如何获取存储”变成了若干服务,包括对象存储服务、块存储服务和没有随机访问的文件存储服务。云不仅改变了开发人员获得这些存储能力的界面,还在于云产品在这些 OpenAPI 或者开源 SDK 背后把分布式场景中的高可用挑战、自动扩缩容挑战、安全挑战、运维升级挑战等都处理了,应用的开发人员就不用在其代码中处理节点宕机前如何把本地保存的内容同步到远端的问题,也不用处理当业务峰值到来时如何对存储节点进行扩容的问题,而应用的运维人员不用在发现 zero day 安全问题时紧急对三方存储软件进行升级 …… 云把三方软硬件的能力升级成了服务,开发人员的开发复杂度和运维人员的运维工作量都得到极大降低。显然,如果这样的云服务用得越多,那么开发和运维人员的负担就越少,企业在非核心业务实现上从必须的负担变成了可控支出。在一些开发能力强的公司中,对这些三方软硬件能力的处理往往是交给应用框架(或者说公司内自己的中间件)来做的;在云的时代云厂商提供了更具 SLA 的服务,使得所有软件公司都可以由此获益。 这些使得业务代码的开发人员技能栈中,不再需要掌握文件及其分布式处理技术,不再需要掌握各种复杂的网络技术 …… 简化让业务开发变得更敏捷、更快速!
Pony马 2021-01-14 15:30:35 0 浏览量 回答数 0

问题

设计模式探讨

有一个设计模式点想和大家讨论一下。比如我现在有 a,b,c 三个业务,在三个类中,业务处理过程大同小异。我现在是按照模板方法,建了一个父类 s,其他类都继承它,在 s 中编写 proc...
Atom 2020-04-25 14:27:31 0 浏览量 回答数 1

回答

阿里云的OceanBase现面向受邀的企业客户开放测试。外网可以下载V.1.4版本 详情 https://oceanbase.alipay.com/download/resource OceanBase2.0 9月21日下午,在云栖大会ATEC数字金融架构转型分论坛中,蚂蚁金服OceanBase团队的资深技术专家蒋志勇正式宣布OceanBase 2.0重磅发布! https://www.csdn.net/article/a/2018-09-26/15961827 在功能方面,2.0版本实现了一个标志性新特性—存储过程。我们实现存储过程,有两个方面的目的:一个是兼容性,我们了解到,在传统行业中还是有不少系统是基于存储过程实现的。通过支持存储过程可以显著降低这部分系统的迁移成本。另外一个是高可用,通过使用存储过程,可以显著减少业务系统和数据库服务器之间的交互,如果业务流程的几十条、几百条SQL语句通过一个存储过程来实现,即便出现跨城的业务对数据库的调用,也不会对用户体验有明显的影响,系统的容灾将会更容易实现,稳定性也会更高。在为数不多的原生分布式数据库产品中,OceanBase是第一款支持存储过程功能的。 存储过程也支持MySQL、Oracle两种模式。如果业务不想让数据库来管理代码,也可以采用匿名块的使用方式,既有开发灵活性,又能获得存储过程带来的好处。存储过程采用LLVM编译执行,效率比解释执行高;支持基本调试功能,方便对大规模存储过程的开发和调试。
叶林森 2019-12-02 01:26:57 0 浏览量 回答数 0

回答

原版英文链接:点击这里 作者 | Md Kamaruzzaman 译者 | 无明 策划 | 小智 基础设施:条条道路通云端 对于云厂商来说,2019 年是硕果累累的一年。不仅初创公司在使用云计算,那些很注重安全的“保守派”公司(如政府机构、医疗保健机构、银行、保险公司,甚至是美国五角大楼)也在迁移到云端。这种趋势在 2020 年将会继续,大大小小的公司都将(或者至少有计划)迁移到云端。Gartner 公司最近发布了一个数字: 如果你是一个还在考虑要不要迁移到云端的决策者,不妨重新审视一下你的策略。如果你是一个独立开发者,并且还没使用过云基础设施,那么完全可以在 2020 年尝试一下。很多大型的云厂商(如亚马逊、微软、谷歌)都提供了免费的体验机会。谷歌在这方面做得特别大方,它提供了价值 300 美元的一年免费服务。 策划注:阿里、腾讯、华为等国内云厂商同样有免费云服务试用产品。 云平台:亚马逊领头,其他跟上 作为第一大云厂商,亚马逊在 2019 年可谓风生水起。凭借其丰富的产品组合,亚马逊将把它的优势延续到 2020 年。Canalys 发布的 2019 年第三季度报告指出,大型云厂商(AWS、Azure、GCP)占据 56% 的市场份额,其中 AWS 独享 32.6%。 其他云厂商也在努力缩短与 AWS 之间的差距。微软把主要目标转向了大型企业。最近,微软打败了亚马逊,从美国五角大楼拿到了一个 100 亿美元的大单子。这个单子将提升 Azure 的声誉,同时削弱 AWS 的士气。 谷歌一直在推动 CNCF,实现云计算运维的标准化。谷歌的长期目标是让云迁移变得更容易,方便企业从 AWS 迁移到 GCP。IBM 之前斥资 360 亿美元收购了 RedHat,也想要在云计算市场占有一席之地。 在亚太地区,阿里云市场规模超过了 AWS、Azure 的总和,全球排名第三。中国国内腾讯云等企业的增长势头也十分迅猛。 2020 年将出现更多的并购。当然,很多初创公司将会带来新的想法和创新,例如多云服务。因为竞争激烈,这些公司只能从降价和推出更多的创新产品来获取利润。 容器化:Kubernetes 将会更酷 在容器编排领域,虽然一度出现了“三足鼎立”(Kubernetes、Docker Swarm 和 Mesos),但 Kubernetes 最终脱颖而出,成为绝对的赢家。云是一个分布式系统,而 Kubernetes 是它的 OS(分布式的 Linux)。2019 年北美 KubeCon+CloudNativeCon 大会的参会者达到了 12000 名,比 2018 年增长了 50%。以下是过去 4 年参会人数的增长情况。 在 2020 年,Kubernetes 不仅不会后退,只会变得越来越强,你完全可以把赌注压在 Kubernetes 身上。另外值得一提的是,Migrantis 最近收购了 Docker Enterprise,不过收购数额不详。 几年前,人们张口闭口说的都是 Docker,而现在换成了 Kubernetes。Docker 在它的全盛时期未能盈利,反而在优势渐退几年之后才尝试变现。这再次说明,在现代技术世界,时机就是一切。 软件架构:微服务将成为主流 谷歌趋势表明,微服务架构范式在 2019 年持续增长了一整年。 随着软件行业整体逐步迁移到云端,微服务也将成为占主导地位的架构范式。微服务架构崛起的一个主要原因是它与云原生完美契合,可以实现快速的软件开发。我在之前的一篇博文中解释了微服务架构的基本原则及其优势和劣势。 https://towardsdatascience.com/microservice-architecture-a-brief-overview-and-why-you-should-use-it-in-your-next-project-a17b6e19adfd 我假设现在也存在一种回归到单体架构的趋势,因为在很多情况下,微服务架构有点过头了,而且做好微服务架构设计其实很难。微服务架构有哪些好的实践?在之前的另一篇博文中,我也给出了一些大概,希望对读者有用。 https://towardsdatascience.com/effective-microservices-10-best-practices-c6e4ba0c6ee2 编程语言(整体):Python 将吞噬世界 机器学习、数据分析、数据处理、Web 开发、企业软件开发,甚至是拼接黑洞照片,Python 的影子无处不在。 在著名的编程语言排行榜网站 TIOBE 上,Python 位居最流行编程语言第三位,仅次于 Java 和 C 语言。 更有意思的是,在 2019 年,Python 的流行度翻了一番(从 5% 到 10%)。 Python 的崛起将在 2020 年延续,并缩短与 Java 和 C 语言之间的差距。另一门无所不在的编程语言 JavaScript 正面临下行的风险。为什么 Python 的势头会如此强劲?因为它的入手门槛低,有一个优秀的社区在支持,并受到数据科学家和新生代开发者的喜爱。 编程语言(企业方面):Java 将占主导 之前的 TIOBE 网站截图显示,Java 仍然是一门占主导地位的编程语言,并将在 2020 年继续保持这种地位。JVM 是 Java 的基石,其他编程语言(如 Kotlin、Scala、Clojure、Groovy)也将 JVM 作为运行时。最近,Oracle 修改了 JVM 的许可协议。 新的许可协议意味着使用 Java、Kotlin、Scala 或其他 JVM 编程语言的公司需要向 Oracle 支付大额费用。所幸的是,OpenJDK 让 JVM 继续免费。另外,还有其他一些公司为 JVM 提供企业支持。 因为体积和速度方面的问题,基于 JVM 的编程语言并不适合用在今天的无服务器环境中。Oracle 正在推动 GraalVM 计划,旨在让 Java 变得更加敏捷和快速,让它更适合用在无服务器环境中。因为除了 Java,没有其他编程语言可以提供企业级的稳定性和可靠性,所以 Java 将在 2020 年继续占主导地位。 企业版 Java:Spring 继续发力 曾几何时,在企业开发领域,Spring 和 JavaEE 之间存在着白热化的竞争。但因为 Oracle 在 JavaEE 方面没有作为,在竞争中惨败,这导致了“MicroProfile”计划的形成,并最终促成了 JakartaEE。 虽然所有的政策和活动都是围绕 JavaEE 展开,但 Spring 事实上已经赢得了这场企业 JVM 之争。2020 年,Spring 将成为 JVM 生态系统的头牌。 有两个正在进展中的项目,它们旨在减小 Java 的体积,让它更适合用在无服务器环境中。 其中一个是 Micronaut(https://micronaut.io/)。 另一个是 Quarkus(https://quarkus.io/)。 这两个项目都使用了 GraalVM,它们在 2020 年将会得到 Java 社区更多的关注。 编程语言:后起之秀的突破 2000 年代,编程语言的发展出现了停滞。大多数人认为没有必要再去开发新的编程语言,Java、C 语言、C++、JavaScript 和 Python 已经可以满足所有的需求。但是,谷歌的 Go 语言为新编程语言大门打开了一扇大门。在过去十年出现了很多有趣的编程语言,比如 Rust、Swift、Kotlin、TypeScript。导致这种情况的一个主要原因是已有的编程语言无法充分利用硬件优势(例如多核、更快的网络、云)。另一个原因是现代编程语言更加关注开发者经济,即实现更快速更容易的开发。在 Stackoverflow 提供的一份开发者报告中,排名靠前的现代编程语言如下所示(Rust 连续 4 年名列第一)。 在之前的一篇博文中,我深入探讨了现代编程语言,对比 Rust 和 Go 语言,并说明了为什么现在是采用这些语言的好时机。 https://towardsdatascience.com/back-to-the-metal-top-3-programming-language-to-develop-big-data-frameworks-in-2019-69a44a36a842 最近,微软宣布他们在探索使用 Rust 来开发更安全的软件。 亚马逊最近也宣布要赞助 Rust。 谷歌宣布将 Kotlin 作为 Android 官方开发语言,所以,在 JVM 领域,Kotlin 成了 Java 的主要竞争对手。 Angular 使用 TypeScript 代替 JavaScript,将其作为主要的编程语言,其他 JavaScript 框架(如 React 和 Vue)也开始为 TypeScript 提供更多的支持。 这种趋势将在 2020 年延续下去,很多巨头公司将会深入了解新一代编程语言(如 Rust、Swift、TypeScript、Kotlin),它们会站出来公开表示支持。 Web:JavaScript 继续占主导地位 曾几何时,JavaScript 并不被认为是一门强大的编程语言。在当时,前端内容主要通过后端框架在服务器端进行渲染。2014 年,AngularJS 的出现改变了这种局面。从那个时候开始,更多的 JavaScript 框架开始涌现(Angular 2+、React、Vue、Meteor),JavaScript 已然成为主流的 Web 开发语言。随着 JavaScript 框架不断创新以及微服务架构的崛起,JavaScript 框架在 2020 年将继续主导前端开发。 JavaScript 框架:React 闪耀 虽然 React 是在 AngularJS 之后出现的,但在过去十年对 Web 开发产生了巨大的影响,这也让 Facebook 在与 Google+ 的竞争中打了一场胜战。React 为前端开发带来了一些新的想法,比如事件溯源、虚拟 DOM、单向数据绑定、基于组件的开发,等等。它对开发者社区产生了重大影响,以至于谷歌放弃了 AngularJS,并借鉴 React 的想法推出了彻底重写的 Angular 2+。React 是目前为止最为流行的 JavaScript 框架,下图显示了相关的 NPM 下载统计信息。 为了获得更好的并发和用户体验,Facebook 宣布完全重写 React 的核心算法,推出了 React-Fiber 项目。 2020 年,React 仍然是你开发新项目的首选 Web 框架。其他框架(如 Angular/Angular 2+ 或 Vue)呢?Angular 仍然是一个不错的 Web 开发框架,特别适合企业开发。我敢肯定谷歌在未来几年会在 Angular 上加大投入。Vue 是另一个非常流行的 Web 框架,由中国的巨头公司阿里巴巴提供支持。如果你已经在使用 Angular 或 Vue,就没必要再迁移到 React 了。 App 开发:原生应用 在移动 App 开发方面,有关混合应用开发的炒作有所消停。混合开发提供了更快的开发速度,因为只需要一个开发团队,而不是多个。但原生应用提供了更好的用户体验和性能。另外,混合应用需要经过调整才能使用一些高级特性。对于企业来说,原生应用仍然是首选的解决方案,这种趋势将在 2020 年延续。Airbnb 在一篇博文中非常详细地说明了为什么他们要放弃混合应用开发平台 React Native。 https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a 尽管 Facebook 尝试改进 React Native,谷歌也非常努力地推动混合 App 开发平台 Flutter,但它们仍然只适合用于原型、POC、MVP 或轻量级应用的开发。所以,原生应用在 2020 年仍将继续占主导地位。 在原生应用开发方面,谷歌和苹果分别将 Kotlin 和 Swift 作为各自平台主要的编程语言。谷歌最近再次重申了对 Kotlin 的支持,这对于 Kotlin 用户来说无疑是个好消息。 混合应用开发:React Native 在很多情况下,混合应用是个不错的选择。在这方面也有很多选择:Xamarin、Inoic、React Native 和 Flutter。Facebook 基于成熟的 React 框架推出了 React Native。就像 React 在 Web 框架领域占据主导地位一样,React Native 在混合应用领域也占据着主导地位,如下图所示。 React Native 和 React 有共同的基因,都提供了高度的代码重用性以及“一次开发,到处运行”的能力。React Native 的另一个优势是 Facebook 本身也用它来开发移动应用。谷歌在这个领域起步较晚,但在去年,谷歌的混合应用开发框架 Flutter 获得了不少关注。Flutter 提供了更好的性能,但需要使用另一门不是那么流行的编程语言 Dart。React Native 在 2020 年将继续占主导地位。 API:REST 将占主导地位 REST 是 API 领域事实上的标准,被广泛用在基于 API 的服务间通信上。当然,除了 REST,我们还有其他选择,比如来自谷歌的 gRPC 和来自 Facebook 的 GraphQL。 它们提供了不同的能力。谷歌开发的 gRPC 作为远程过程调用(如 SOAP)的化身,使用 Protobuf 代替 JSON 作为消息格式。Facebook 开发的 GraphQL 作为一个集成层,避免频繁的 REST 调用。gRPC 和 GraphQL 都在各自的领域取得了成功。2020 年,REST 仍然是占主导地位的 API 技术,而 GraphQL 和 gRPC 将作为补充技术。 人工智能:Tensorflow 2.0 将占主导地位 谷歌和 Facebook 也是深度学习 / 神经网络领域的主要玩家。谷歌基于深度学习框架 Theano 推出了 TensorFlow,它很快就成为深度学习 / 神经网络的主要开发库。谷歌还推出了特别设计的 GPU(TPU)来加速 TensorFlow 的计算。 Facebook 在深度学习领域也不甘落后,他们拥有世界上最大的图像和视频数据集合。Facebook 基于另一个深度学习库 Torch 推出了深度学习库 PyTorch。TensorFlow 和 PyTorch 之间有一些区别,前者使用的是静态图进行计算,而 PyTorch 使用的是动态图。使用动态图的好处是可以在运行时纠正自己。另外,PyTorch 对 Python 支持更好,而 Python 是数据科学领域的一门主要编程语言。 随着 PyTorch 变得越来越流行,谷歌也赶紧在 2019 年 10 月推出了 TensorFlow 2.0,也使用了动态图,对 Python 的支持也更好。 2020 年,TensorFlow 2.0 和 PyTorch 将齐头并进。考虑到 TensorFlow 拥有更大的社区,我估计 TensorFlow 2.0 将成为占主导地位的深度学习库。 数据库:SQL是王者,分布式SQL是王后 在炒作 NoSQL 的日子里,人们嘲笑 SQL,还指出了 SQL 的种种不足。有很多文章说 NoSQL 有多么的好,并将要取代 SQL。但等到炒作的潮水褪去,人们很快就意识到,我们的世界不能没有 SQL。以下是最流行的数据库的排名。 可以看到,SQL 数据库占据了前四名。SQL 之所以占主导地位,是因为它提供了 ACID 事务保证,而 ACID 是业务系统最潜在的需求。NoSQL 数据库提供了横向伸缩能力,但代价是不提供 ACID 保证。 互联网公司一直在寻找“大师级数据库”,也就是既能提供 ACID 保证又能像 NoSQL 那样可横向伸缩的数据库。目前有两个解决方案可以部分满足对“大师级数据库”的要求,一个是亚马逊的 Aurora,一个是谷歌的 Spanner。Aurora 提供了几乎所有的 SQL 功能,但不支持横向写伸缩,而 Spanner 提供了横向写伸缩能力,但对 SQL 支持得不好。 2020 年,但愿这两个数据库能够越走越近,或者有人会带来一个“分布式 SQL”数据库。如果真有人做到了,那一定要给他颁发图灵奖。 数据湖:MinIO 将要崛起 现代数据平台非常的复杂。企业一般都会有支持 ACID 事务的 OLTP 数据库(SQL),也会有用于数据分析的 OLAP 数据库(NoSQL)。除此之外,它们还有其他各种数据存储系统,比如用于搜索的 Solr、ElasticSearch,用于计算的 Spark。企业基于数据库构建自己的数据平台,将 OLTP 数据库的数据拷贝到数据湖中。各种类型的数据应用程序(比如 OLAP、搜索)将数据湖作为它们的事实来源。 HDFS 原本是事实上的数据湖,直到亚马逊推出了对象存储 S3。S3 可伸缩,价格便宜,很快就成为很多公司事实上的数据湖。使用 S3 唯一的问题是数据平台被紧紧地绑定在亚马逊的 AWS 云平台上。虽然微软 Azure 推出了 Blob Storage,谷歌也有类似的对象存储,但都不是 S3 的对手。 对于很多公司来说,MinIO 或许是它们的救星。MinIO 是一个开源的对象存储,与 S3 兼容,提供了企业级的支持,并专门为云原生环境而构建,提供了与云无关的数据湖。 微软在 Azure Marketplace 是这么描述 MinIO 的:“为 Azure Blog Storage 服务提供与亚马逊 S3 API 兼容的数据访问”。如果谷歌 GCP 和其他云厂商也提供 MinIO,那么我们将会向多云迈出一大步。 大数据批处理:Spark 将继续闪耀 现如今,企业通常需要基于大规模数据执行计算,所以需要分布式的批处理作业。Hadoop 的 Map-Reduce 是第一个分布式批处理平台,后来 Spark 取代了 Hadoop 的地位,成为真正的批处理之王。Spark 是怎样提供了比 Hadoop 更好的性能的?我之前写了另一篇文章,对现代数据平台进行了深入分析。 https://towardsdatascience.com/programming-language-that-rules-the-data-intensive-big-data-fast-data-frameworks-6cd7d5f754b0 Spark 解决了 Hadoop Map-Reduce 的痛点,它将所有东西放在内存中,而不是在完成每一个昂贵的操作之后把数据保存在存储系统中。尽管 Spark 重度使用 CPU 和 JVM 来执行批处理作业,但这并不妨碍它成为 2020 年批处理框架之王。我希望有人能够使用 Rust 开发出一个更加高效的批处理框架,取代 Spark,并为企业省下大量的云资源费用。 大数据流式处理:Flink 是未来 几年前,实现实时的流式处理几乎是不可能的事情。一些微批次处理框架(比如 Spark Streaming)可以提供“几近”实时的流式处理能力。不过,Flink 改变了这一状况,它提供了实时的流式处理能力。 2019 年之前,Flink 未能得到足够的关注,因为它无法撼动 Spark。直到 2019 年 1 月份,中国巨头公司阿里巴巴收购了 Data Artisan(Flink 背后的公司)。 在 2020 年,企业如果想要进行实时流式处理,Flink 应该是不二之选。不过,跟 Spark 一样,Flink 同样重度依赖 CPU 和 JVM,并且需要使用大量的云资源。 字节码:WebAssembly将被广泛采用 我从 JavaScript 作者 Brandon Eich 的一次访谈中知道了 WebAssembly 这个东西。现代 JavaScript(ES5 之后的版本)是一门优秀的编程语言,但与其他编程语言一样,都有自己的局限性。最大的局限性是 JavaScript 引擎在执行 JavaScript 时需要读取、解析和处理“抽象语法树”。另一个问题是 JavaScript 的单线程模型无法充分利用现代硬件(如多核 CPU 或 GPU)。正因为这些原因,很多计算密集型的应用程序(如游戏、3D 图像)无法运行在浏览器中。 一些公司(由 Mozilla 带领)开发了 WebAssembly,一种底层字节码格式,让任何一门编程语言都可以在浏览器中运行。目前发布的 WebAssembly 版本可以支持 C++、Rust 等。 WebAssembly 让计算密集型应用程序(比如游戏和 AutoCAD)可以在浏览器中运行。不过,WebAssembly 的目标不仅限于此,它还要让应用程序可以在浏览器之外运行。WebAssembly 可以被用在以下这些“浏览器外”的场景中。 移动设备上的混合原生应用。没有冷启动问题的无服务器计算。在服务器端执行不受信任的代码。 我预测,2020 年将是 WebAssembly 取得突破的一年,很多巨头公司(包括云厂商)和社区将会拥抱 WebAssembly。 代码:低代码 / 无代码将更进一步 快速的数字化和工业 4.0 革命意味着软件开发者的供需缺口巨大。由于缺乏开发人员,很多企业无法实现它们的想法。为了降低进入软件开发的门槛,可以尝试无代码(No Code)或低代码(Low Code)软件开发,也就是所谓的 LCNC(Low-Code No-Code)。它已经在 2019 年取得了一些成功。 LCNC 的目标是让没有编程经验的人也能开发软件,只要他们想要实现自己的想法。 虽然我对在正式环境中使用 LCNC 框架仍然心存疑虑,但它为其他公司奠定了良好的基础,像亚马逊和谷歌这样的公司可以基于这个基础构建出有用的产品,就像 AWS Lambda 的蓬勃发展是以谷歌 App Engine 为基础。 2020 年,LCNC 将会获得更多关注。
茶什i 2019-12-26 11:57:03 0 浏览量 回答数 0

问题

【阿里云产品评测】个人WP站的云体验

1 ECS 首先来说说我自己,一直对计算机颇有兴趣,高中的时候就开始研究了些PHP的东西, 05年上大二的时候,注册了自己的域名www.cnsjw.cn  ,并开通了自己...
cnsjw 2019-12-01 20:54:27 22207 浏览量 回答数 25

回答

"静态页面和站点适合用于内容少、更新频率低的场景,反之,就需要动态站点了。比如 淘宝的商品页面,采用静态页面方式管理商品信息是不现实的。如何根据用户请求动态地返 回结果呢?我们来看两种常见的解决方案:  Web 单体应用:所有的应用逻辑都在一个应用中完成,结合数据库,这种分层架构可 以快速实现一些复杂度较低的应用;  微服务应用:随着业务发展,功能多了,访问量高了,团队大了,这时候一般就需要将 单体应用中的逻辑拆分成多个执行单元,比如商品页面上的评论信息、售卖信息、配送 信息等,都可以对应一个单独的微服务。这种架构的好处是每个单元是高度自治的,易 于开发(比如使用不同技术)、部署和扩展。但是这种架构也引入了分布式系统的一些 问题,如服务间通信的负载均衡、失败处理等。 处在不同阶段不同规模的组织可以选择适合自身的方式,来解决它面临的首要业务问 题,淘宝最初被人们接受一定不是因为它使用了哪种技术架构。但是无论选择哪种架构,上 面提到的 Serverless 原生心智都有助于我们专注业务。比如:  是否需要自己购置服务器安装数据库,实现高可用、管理备份、升级版本等,还是可以 把这些事情交给托管的服务如 RDS;是否可使用表格存储、Serverless HBase 等 Serverless 数据库服务,实现按使用的弹性扩容缩容和付费; 单体应用是需要自己购置服务器运行,还是可以交给托管服务,如函数计算和 Serverless 应用引擎;  是否可以通过函数来实现轻量级微服务,依赖函数计算提供的负载均衡、自动伸缩、按 需付费、日志采集、系统监控等能力;  基于 Spring Cloud、Dubbo、HSF 等实现的微服务应用是否需要自己购置服务器 部署应用,管理服务发现,负载均衡,弹性伸缩,熔断,系统监控等,还是可以将这些 工作交给诸如 Serverless 应用引擎服务。 架构引入了 API 网关、函数计算或者 Serverless 应用引擎来实现计算 层,将大量的工作交给了云服务完成,让用户最大程度上专注实现业务逻辑。其中系统内部 多个微服务的交互如下图所示,通过提供一个商品聚合服务,将内部的多个微服务统一呈现 给外部。这里的微服务可以通过 SAE 或者函数实现。
1358896759097293 2021-03-24 13:51:54 0 浏览量 回答数 0

回答

[健] 一个系统最基本的功能就是  登录权限 但是往往别人觉得没技术含量 其实里面学问挺大 可以贴出来一起探讨下 比如数据权限 菜单权限 登录和验证方式啥的 [犀利豆] 好巧,我之前也做个一个,我主要介绍的是技术上的一些点 「如何利用 Spring Hibernate 高级特性设计实现一个权限系统」**[元清] 树描述组织结构少不了,但是我觉得用rbac 思想指导更好[犀利豆] 主要是业务有一些要求,要根据组织架构做一些数据的隔离[元清] 嗯,数据隔离是少不了的,我是把角色作为一个租户id [犀利豆] 先有的系统,后有的权限系统,考虑了很多 接入方怎么快速接入,怎么做到无侵入[元清] 为什么要做到数据库层呢,做到数据库层已经侵入了吧,我这个就是配置一下,就可以了,配置一层filter [犀利豆] 这个的问题是比较具体的,我们的数据要按照公司的组织架构做数据隔离[元清] 都是按照组织架构做数据隔离的[犀利豆] 比如,公司分成了华南,华东,华北。三个地区的用户之间看到的信息是隔离的。[元清] 嗯,这个当然是的,用一个租户id 就可以了[犀利豆] 是的,所以这个租户id 要拼接到sql 里面,查询数据[元清] 哦,你们没有在原有表上面加字段是吧[犀利豆] 这个隔离不是全部隔离,还有横向部门的人,可以看见某几个区域的数据。[元清] 哦,你们是没有改数据库表结构,通过命名方式,来做数据查询么,比如命名规则租户id+xxxx,这个就是树形结构的描述了,我的树形是父拥有所有子的权限,我们还是侵入的,业务端的表都要加租户id 去标示[犀利豆] 没有 系统运行很长一段时间了 不太有时间改 所以想到的方法是用hibernate 的filter 在session层级做的 [元清] 可以的,hibernate我都没用过[犀利豆] 我们也要加租户id,只是已经有了。用hibernate的filter的好处只是,不需要改动controller和service层级,dao层级需要在entity 实际上配置,一个隔离租户的sql,在执行查询的时候,利用aop 把查询的session取出来,自动把过滤的条件拼接在业务sql上[元清] **听起来就很复杂,不过思路还蛮好的,应该也不难维护 来源:云原生后端社区https://www.yuque.com/server_mind/answer
montos 2020-04-20 18:27:23 0 浏览量 回答数 0

问题

[精品问答]Java一百问第一期

java之父高斯林,Java的缔造者。 而Java发展至今,使用者已占领市场七成。 动心者仍在观望,使用者“爱恨交加” 以下是为每一个java使用者整理的灵魂百问,大部分都是踩坑经验...
问问小秘 2019-12-01 21:51:20 791 浏览量 回答数 1

回答

Redis里的数据不立刻更新,等redis里数据自然过期。然后去DB里取,顺带重新set redis。这种用法被称作“Cache Aside”。好处是代码比较简单,坏处是会有一段时间DB和Redis里的数据不一致。这个不一致的时间取决于redis里数据设定的有效期,比如10min。但如果Redis里数据没设置有效期,这招就不灵了。2. 更新DB时总是不直接触碰DB,而是通过代码。而代码做的显式更新DB,然后马上del掉redis里的数据。在下次取数据时,模式就恢复到了上一条说的方式。这也算是一种Cache Aside的变体。这要做的好处是,数据的一致性会比较好,一般正常情况下,数据不一致的时间会在1s以下,对于绝大部分的场景是足够了。但是有极少几率,由于更新时序,下Redis数据会和DB不一致(这个有文章解释,这里不展开)。Cache Aside,就是“Cache”在DB访问的主流程上帮个忙1和2的做法常规上被称为“Cache“。而且因为1有更新不及时的问题,2有极端情况下数据会不一致的问题,所以常规Cache代码会把1+2组合起来,要求Redis里的数据必须有过期时间,并且不能太长,这样即便是不一致也能混过去。同时如果是主动对数据进行更新,Cache的数据更新也会比较及时。并且2并不一定总是行得通。比如OLTP的服务在前面是Cache+DB的模式,而数据是由后台管理系统来更新的,总是不会触碰OLTP服务,更不会动Cache。这时将Redis看作是存储也算是一种方案。就是:3. Redis里的数据总是不过期,但是有个背景更新任务(“定时执行的代码” 或者 “被队列驱动的代码)读取db,把最新的数据塞给Redis。这种做法将Redis看作是“存储”。访问者不知道背后的实际数据源,只知道Redis是唯一可以取的数据的地方。当实际数据源更新时,背景更新任务来将数据更新到Redis。这时还是会存在Redis和实际数据源不一致的问题。如果是定时任务,最长的不一致时长就是更新任务的执行间隔;如果是用类似于队列的方式来更新,那么不一致时间取决于队列产生和消费的延迟。常用的队列(或等价物)有Redis(怎么还是Redis),Kafka,AMQ,RMQ,binglog,log文件,阿里的canal等。Cache当作“存储”来用,访问者只看得到Cache这种做法还有一种变体Write Through,写入时直接写DB,DB把数据更新Cache,而读取时读Cache。Write Through + Cache当存储以上方式无论如何都会有一段时间Redis和DB会不一致。实践上,这个不一致时间短则几十ms,长可以到几十分钟。这种程度的一致性对于很多业务场景都已经足够了。很多时候,用户无法区分自己读取的是Redis还是DB,只能读取到其中的一个。这时数据看起来直觉上是没问题的就可以接受了。只要不出现,用户先看见了数据是A,然后看到数据是B,之后一刷新,又看到A的尴尬场景就行了。(这也可以部份解释为啥用经常使用共享式的Cache而不是本地Cache方案)。但对于有些业务,比如协作文档编辑,电商秒杀的扣库存,银行转账等,以上的做法就不够用了。解决办法也有两大类。第一种是不要用Redis,只用DB。或者更直接点说是“只要一个单点的数据源”。这样肯定就没有一致性问题,代价就是CAP中因为CP被满足,因此A被牺牲掉。这就是为啥银行一系统升级就要停服务的原因。当然实际上也有CAP兼顾,但是C要的强一点,A就得弱一点,但不至于完全牺牲掉的做法。这里不展开。另外一种保证一致性的做法就是用某种分布式协议一致性来做,大致可以归结到SAGA或者TCC - 这两种需要业务代码的大量配合。通过业务代码来补偿一致性。2PC, 3PC - 现实当中有XA协议。比如Ehcache是支持XA协议的。但是性能表现不佳,运维也麻烦,我比较少见到实际这么干的。基于Paxos或者Raft的分布式锁,然后对Redis和DB进行双写,但是除非客户端和服务器么次都去访问分布式锁,也会有一点点不一致的问题。这实际上相当于将多个地方的一致性控制交给了分布式锁的集中维护。这些做法实施复杂度和运维复杂度太高,以至于对于像Redis + DB这种场景基本上没人这么干。本质上大家用Redis一般也就是想做个Cache而已。这些方案通常被用到比如多数据中心数据一致性维护的系统中。综上,除了单点DB存储之外的方案,其一致性面临的窘境是要么,接受“最终一致”,但到底多久之后一致,不一致时表现怎么样,有很多种做法。分布式一致性有各种各样的模型,比如线性一致性、顺序一致性等。他们都是在“不一致”和“强一致”之间提供某种折衷。这些折衷大量应用于我们常见的诸多业务之中、如社交、IM、电商不触及钱的地方等要么,要求必须强一致。那么在分布式条件下就要牺牲A。比如访问一个Cache,Cache知道自己的数据不是最新的,就要和DB去Sync,Sync的过程中DB的数据还不能改。期间访问者要不收到一个错误“数据不同步,不能访问”,要不就卡在那里等着同步完成。个人以为,这还不如干脆就不要Cache,在维护强一致的同时,用其他方式来优化访问性能。最最后提醒下,本文有很多不严谨的地方,包括对Cache的形式总结其实只有典型的几种,实际可能的要多得多;再比如对一致性的介绍也非常粗浅,原因是为了让初学者有一点点概念,能看得进去(就这样,已经很长了,评论区里也有人表示接受不了)。对于分布式和其一致性的完整知识的学习需要耗费大量的精力,Good Luck & Best Wishes。 来源:云原生后端社区
保持可爱mmm 2020-04-22 10:23:06 0 浏览量 回答数 0

问题

【百问百答】Apache Spark 中文实战攻略

1、Apache Spark 3.0 是什么? 2、Apache Spark 3.0 与性能相关的新功能主要有哪些? 3、 Spark 3.0 的Adaptive Query Execution是什么࿱...
爱吃鱼的程序员 2020-12-28 14:33:41 25 浏览量 回答数 0

问题

荆门开诊断证明-scc

(微)电〗【186-6605-3854〗号【精品问答】Java技术1000问(1) 问问小秘 2019-11-15 11:24:15 9099 为了方便Java开发者快速找到相关技术问题和答案,开发...
游客5k2abgdj3m2ti 2019-12-01 22:09:00 1 浏览量 回答数 0

回答

我也是一个js码农。毕业出来工作之后,实习期战战兢兢,拼命学习,完成工作任务,加班也是常态。但是两个月之后,项目没那么忙了。整个人也就慢慢松懈下来了。但是感觉很多人都很厉害,飞速提升。自己当时做的项目没有前后端分离,有很多真正的开发是接触不到的。于是我很恐慌。整个人开始陷入长长的焦虑中,晚上抱着手机迟迟不愿睡去。 但是好在自己平时会刷公众号和一些类似于掘金之类的平台。然后看那些厉害的人经验分享,知道了原生js、底层的基础知识非常重要,于是我想,虽然没有多少项目积累,先从基础知识了解起总是不会错的吧。于是开始了我各找刷公众号、学习博客和读书之旅。 后来我又遇到了一些朋友和大牛,彼此交流下学习得心得。也知道了如何相对比较快速地去掌握一个知识点,才发觉自己原来的学习方法并不高效。也知道了自己应该发展的方向。下面我就来分享一下我自己的一些学习得方法和感悟。 一、看书 看书是我作为一个呆板学生的最大执念。然而这并不代表着我真的看了很多的技术类书籍。因为平时不认真学习但是去技术类书籍的人都懂,书上的好多名词你是看不懂的。除非一边看,一边跟着实践,但是大部分人会觉得这样做非常地麻烦。。。因此看起一本书来速度特别的慢。。。。 但是这只是表象,我还是乐此不疲,反反复复的去逛各种博客,我知道很痛苦,但是我暂时想不到更好的提高自我的办法。 其实我发现,一个东西你反反复复看久了,你去看概念,去理解别人的案例代码,对照着代码慢慢地理解和分析。最后他们说的那些名词和术语是什么你就都会懂了,大概这就是书读百遍其义自见吧。。。(手动狗头)。。。。一个东西,你见得多了,真的,你不认识它,它都认识你了。 其次是我觉得要学会关注一些大牛的博客,他们学习了一个知识点之后,记录和分享自己的心得,然后如果你是真的认真消化和吸收了,真的是获益良多。 比如我关注过 冴羽 大大的github, 他在掘金上也有同名账号,当初正是因为看了他整个15篇的《深入了解js》我对js的了解才更深一点。再次强烈推荐,不过当时读起来,尤其是读到后面,也确实是比较艰辛的。但是自己一点一点慢慢啃,反复消化。理解了之后,感觉整个就大不一样了。 同样推荐的还有张鑫旭的博客,阮一峰的博客等等,其实可以多去掘金上逛逛。针对前端技术分享的帖子真的很多,学习资源多到数不过来,但是要一个一个来,不要贪多,一个知识点消化了,比一路看很多文章但是都是一知半解的强了不知道多少。 还推荐几个公众号,比如“前端早读课”、“前端大全”、“奇舞周刊”等。前端早读和课前端大全很多文章是搬运掘金上的,但是基本上它已经帮你筛出了掘金上当天最值得一读的文章了。当初冴羽大大的文章也是在这两个公号中的一个看到然后追下去的。。。 具体的书籍就不怎么推荐了,基本上都是市面上热门的。但是不推荐一下去读《js高级编程》和犀牛书,太厚,培养不起读书的兴趣,可以从薄一点的满满开始看,相信你会大有收获得。。。。 二、看视频 看视频其实是非常有利的一个办法。现在知识付费的时代,慕课网、网易云课堂、可汗学院,还有哔哩哔哩、youtobe,极客时间上的资源大把,而且讲课老师讲得都比较透彻,所以只有不想学,没有学不到的。 看视频学习比较难受的一点就是比较枯燥,要长时间集中精力坐在电脑前,建议多跟着动动手写一写,课后多总结多梳理。 三、看博客 博客自然不用多说,我尤其喜欢看一些连载系列的博客,基本上能跟作者深入地学习了一遍某个知识点,看完了之后,自己再写点总结总结一下,收获会非常大的。 四、看开源的技术网站 这个自然是推荐世界上最大的同性恋网站github啦。github上资源超丰富、目前还有gitlab。不要把它仅仅当做代码托管仓库来用,要学会使用利用它。要学会去看别人的项目,跟着敲,多学习。如果能学会开源贡献就更好了。 文章一开始我说跟别人交流找到科学的学习方法,其实也不过是明确自己要学习哪门技术或者框架,然后去找它相关的文档,找视频和在gitHub上找相关的项目。 一开始介绍和环境搭建的时候看看视频,看看一点点不用看完,然后大概过一遍文档,看看有哪些知识点,最后最多的时间用来研究在GitHub上找到的项目,跟着利用各种api来写你要做的东西。边做边看文档,这样下来,一遍之后,你对知识点的理解和印象就会比较深了。这也是一个非常快的方法。 以前不懂的我,只会闷头看文档和看视频,跟着敲,脱离了实践和独立思考和调试,上手特别慢。想想往事不堪回首,哭唧唧。。。 五、写写技术总结 学习写技术总结是非常重要的。之前我没有写,但是这是我这几年做过的最后悔的事情之一了。写技术博客有几个好处: 1、让你真正梳理和复盘自己学到的东西,能用自己的话把东西说清楚了,才是真正学会了; 2、记录自己做东西的过程中遇到的坑,以后遇到可以避免,也可以给别人作参考,真的,不记,很多不经常用的,你真的会忘记的。 3、对自己的经验的沉淀和积累,其实现在应聘也有很多是希望你有自己的技术博客和记录的。 4、锻炼自己的写作和表达能力。 六、多学英语,学习下周边相关、运动健身 程序员还可以多学学英语和周边相关的东西。英语的重要性不言而喻。很多视频或者优秀的学习资料都是英文的,如果你没有的话就听不懂看不懂。 周边相关可以是后端的一些知识,或者哪怕学学ps,视频剪辑,玩玩音乐,都好,为的是在枯燥生活中找点乐趣。工作是为了生活,生活需要开心。 最后就是要多锻炼了,身体是一切的前提。
茶什i 2020-01-13 14:20:10 0 浏览量 回答数 0

问题

如何定位Android NDK开发中遇到的错误?报错

正式开始这个话题之前,先简单介绍一下什么是NDK和JNI,部分内容来自网络 Android NDK是什么,为什么我们要用NDK? Android ...
爱吃鱼的程序员 2020-06-14 18:55:10 0 浏览量 回答数 1

问题

使用阿里云配置管理ACM实现zookeeper依赖服务的透明Failover迁移

摘要:在访问依赖的服务过程中,我们通常会通过在程序或者配置文件中写死ip列表的形式来发现下游服务,但在下游服务Cluster出现ip迁移的时候,会导致所有依赖该服务的上游应用重新配置ip列表并重新发...
配置管理 2019-12-01 22:10:10 1801 浏览量 回答数 0

问题

盘点年度 Python 类库 Top 10

盘点年度 Python 类库 Top 10 1. HTTPX 如果你是一名经常与 api 交互的 Python 死忠粉,可能会很熟悉 requests 类库。然而,异步范式在高性能现代应用程序中越来越常见&#...
珍宝珠 2020-01-09 13:39:35 77 浏览量 回答数 1

问题

【精品问答】Java技术1000问(1)

为了方便Java开发者快速找到相关技术问题和答案,开发者社区策划了Java技术1000问内容,包含最基础的如何学Java、实践中遇到的技术问题、RocketMQ面试、Java容器部署实践等维度内容。 我们会以每...
问问小秘 2019-12-01 21:57:43 46087 浏览量 回答数 16

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT 阿里云科技驱动中小企业数字化