面向.NET开发人员的Dapr——分布式世界

面向.NET开发人员的Dapr——前言

The world is distributed

分布式世界

Just ask any 'cool kid': Modern, distributed systems are in, and monolithic apps are out!

随便问一个酷小子,他们都会说:现代、分布式系统时间已经到来,单体应用已经成为过去式!

But, it's not just "cool kids." Progressive IT Leaders, corporate architects, and astute developers are echoing these same thoughts as they explore and evaluate modern distributed applications. Many have bought in. They're designing new and replatforming existing enterprise applications following the principles, patterns, and practices of distributed microservice applications.

但并不只是 "酷小子"。卓越的IT领袖、企业架构师和精明的开发人员在探索和评估现代分布式应用程序时,会响应这些想法(产生共鸣)。许多人都认同接受。他们正在按照分布式微服务应用程序的原理、模式和实践设计新的和重构现有企业应用程序。

But, this evolution raises many questions...

  • What exactly is a distributed application?

  • Why are they gaining popularity?

  • What are the costs?

  • And, importantly, what are the tradeoffs?

但是演进引发了许多问题 ...

  • 究竟什么是分布式应用程序?

  • 为什么他们会获得欢迎?

  • 要付出哪些成本(代价)?

  • 重要的是,需要做哪些折衷?

To start, let's rewind and look at the past 15 years. During this period, we typically constructed applications as a single, monolithic unit. Figure 1-1 shows the architecture.

 首先,让我们回顾一下,看看过去15年。在此期间,我们通常将应用程序构建成单体应用。图1-1 显示了此体系结构。

Figure 1-1. Monolithic architecture.

图 1-1。单体应用体系结构。

Note how the modules for Ordering, Identity, and Marketing execute in a single-server process. Application data is stored in a shared database. Business functionality is exposed via HTML and RESTful interfaces.

注意用于订单、标识和营销的模块在单服务器进程中的执行方式。应用程序数据存储在共享数据库中。业务功能通过 HTML 和 RESTful 接口公开。

In many ways, monolithic apps are straightforward. They're straightforward to:

  • Build

  • Test

  • Deploy

  • Troubleshoot

  • Scale vertically (scale up)

在许多方面,单体应用程序简单明了。它们能直截了当地:

  • 构建

  • 测试

  • 部署

  • 疑难解答

  • 垂直缩放 (向上扩展)

However, monolithic architectures can present significant challenges.

但单体结构可能会带来重大挑战。

Over time, you may reach a point where you begin to lose control...

  • The monolith has become so overwhelmingly complicated that no single person understands it.

  • You fear making changes as each brings unintended and costly side effects.

  • New features/fixes become time-consuming and expensive to implement.

  • Even the smallest change requires full deployment of the entire application - expensive and risky.

  • One unstable component can crash the entire system.

  • Adding new technologies and frameworks aren't an option.

  • Implementing agile delivery methodologies are difficult.

  • Architectural erosion sets in as the code base deteriorates with never-ending "special cases."

  • Eventually the consultants come in and tell you to rewrite it.

随着时间的推移,你可能会在某个时间点开始失控...

  • 单体架构已变得非常复杂,没有人能理解(看懂)它。

  • 您担心每个更改都会带来意想不到且代价高昂的副作用。

  • 新功能/修补程序的实现非常耗时且成本高昂。

  • 即使是最小的更改,也需要完全部署整个应用程序-成本高昂且风险巨大。

  • 一个不稳定的组件可能会破坏整个系统。

  • 添加新的技术和框架不太自由方便。

  • 实现敏捷交付非常困难。

  • 随着代码库的恶化,体系结构也被腐蚀,充斥着无止境的 "特殊情况"。

  • 最终,顾问会介入,并告诉你重构它。

IT practitioners call this condition the Fear Cycle. If you've been in the technology business for any length of time, good chance you've experienced it. It's stressful and exhausts your IT budget. Instead of building new and innovative solutions, most of your budget is spent maintaining legacy apps.

IT 从业人员称此限制条件为 恐怖循环 。如果你已在技术业务中花费了很长时间,很可能经历过这种情况。倍感压力并耗尽您的 IT 预算。大多数预算都用来维护旧应用,而不是构建新的创新性解决方案。

Instead of fear, businesses require speed and agility. They seek an architectural style with which they can rapidly respond to market conditions. They need to instantaneously update and individually scale small areas of a live application.

企业要求速度与灵活性,而不是担心。他们会寻找一种架构样式,使其能够快速响应市场状况。他们需要即时更新和单独缩放运行中的应用程序的某一小块。

An early attempt to gain speed and agility came in the form of Service Oriented Architecture, or SOA. In this model, service consumers and service providers collaborated via middleware messaging components, often referred to as an Enterprise Service Bus, or ESB. Figure 1-2 shows the architecture.

最早在 面向服务的体系结构或 SOA 的基础上,尝试获得速度和灵活性。在此模型中,服务使用者和服务提供者通过中间件消息传送组件进行协作,通常称为 企业服务总线,或 ESB 。图1-2 显示了此体系结构。 

Figure 1-2. SOA architecture.

图 1-2。SOA 体系结构。

With SOA, centralized service providers registered with the ESB. Business logic would be built into the ESB to integrate providers and consumers. Service consumers could then find and communicate with these providers using the ESB.

对于 SOA,集中式服务提供者向 ESB 注册。将业务逻辑内置于 ESB 中以集成提供者和使用者。然后,服务使用者可以使用 ESB 查找这些提供者并与其通信。

Despite the promises of SOA, implementing this approach often increased complexity and introduced bottlenecks. Maintenance costs became high and ESB middleware expensive. Services tended to be large. They often shared dependencies and data storage. In the end, SOAs often resulted in a 'distributed monolithic' structure with centralized services that were resistant to change.

尽管有 SOA 的保证,但实现此途径通常会增加复杂性并引入瓶颈。维护成本变得很高,ESB 中间件价格高昂。服务越来越庞大。它们通常共享依赖和数据存储。最终,Soa 通常会导致集中服务的 "分布式单体" 结构,这些服务很难更改。

Nowadays, many organizations have realized speed and agility by adopting a distributed microservice architectural approach to building systems. Figure 1-3 shows the same system built using distributed techniques and practices.

如今,许多组织通过采用分布式微服务体系结构方法构建系统来实现速度和灵活性。图1-3 显示了使用分布式技术和实践构建的同一系统。

Figure 1-3. Distributed architecture.

图 1-3。分布式体系结构。

Note how the same application is decomposed across a set of distributed services. Each is self-contained and encapsulates its own code, data, and dependencies. Each is deployed in a software container and managed by a container orchestrator. Instead of a single database shared by multiple services, each service owns a private database. Other services can't access this database directly and can only get to data that is exposed through the public API of the service that owns it. Note how some services require a full relational database, but others, a NoSQL datastore. The basket service stores its state in a distributed key/value cache. Note how inbound traffic routes through an API Gateway service. It's responsible for directing calls to services and enforcing cross-cutting concerns. Most importantly, the application takes full advantage of the scalability, availability, and resiliency features found in modern cloud platforms.

注意如何将同一应用分解为一系列分布式服务。每个服务都是自包含的,并封装自己的代码、数据和依赖项。每个服务部署在软件容器中并由容器编排器管理。每个服务都拥有一个专用数据库,而不是由多个服务共享的单个数据库。其他服务不能直接访问此数据库,只能通过拥有它的服务的公共 API 获取数据。请注意,某些服务需要关系数据库,而另一些服务则需要 NoSQL 数据存储。购物篮服务将其状态存储在分布式键/值缓存中。请注意入站通讯如何通过 API 网关服务路由。API网关负责将调用定向到服务并强制横切关注点。最重要的是,应用程序充分利用了现代云平台中的可扩展性、可用性和弹性特征。

But, while distributed services can provide agility and speed, they present a different set of challenges. Consider the following...

  • How can distributed services discover each other and communicate synchronously?

  • How can they implement asynchronous messaging?

  • How can they maintain contextual information across a transaction?

  • How can they become resilient to failure?

  • How can they scale to meet fluctuating demand?

  • How are they monitored and observed?

但是,尽管分布式服务可提供灵活性和速度,但它们却引入了不同的挑战。请考虑以下事项...

  • 分布式服务如何相互发现并进行同步通信?

  • 如何实现异步消息传送?

  • 如何在事务中维护上下文信息?

  • 如何才能灵活应对故障?

  • 如何缩放以满足不断变化的需求?

  • 如何监视和观察它们?

For each of these challenges, multiple products are often available. But, shielding your application from product differences and keeping code maintainable and portable become a challenge.

对于上述每种挑战,多种产品可供使用。但是,保护应用程序不受产品差异影响,保持代码的可维护性和可移植性将成为一项挑战。

This book introduces Dapr. Dapr is a distributed application runtime. It directly addresses many of the challenges found that come along with distributed applications. Looking ahead, Dapr has the potential to have a profound impact on distributed application development.

本书介绍了 Dapr。Dapr 是分布式应用程序运行时。它直接解决了分布式应用程序附带的许多挑战。展望未来,Dapr 有可能对分布式应用程序开发产生深远影响。

Summary

总结

In this chapter, we discussed the adoption of distributed applications. We contrasted a monolithic system approach with that of distributed services. We pointed out many of the common challenges when considering a distributed approach.

在本章中,我们讨论了分布式应用程序的采用。我们对比了单体系统模式与分布式服务模式。考虑分布式模式时,我们指出了许多常见的难题。

Now, sit back, relax, and let us introduce you the new world of Dapr.

现在,坐下来,放松,让我们向您介绍Dapr的新世界。

目录:

  • 面向.NET开发人员的Dapr——前言

  • 面向.NET开发人员的Dapr——分布式世界

  • 面向.NET开发人员的Dapr——俯瞰Dapr

  • 面向.NET开发人员的Dapr——入门

  • 面向.NET开发人员的Dapr——参考应用程序

  • 面向.NET开发人员的Dapr——状态管理

  • 面向.NET开发人员的Dapr——发布和订阅

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

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

相关文章

豆瓣最高评分8.1!万维钢:读懂这本书,你会比身边人更深的理解这个时代

▲数据汪特别推荐点击上图进入玩酷屋小木用真金白银来给大家送礼物啦,特别感谢这些年一直以来大家对我们的支持,才让我们越做越好。(点我参与送礼活动)这几年全球各大科技巨头纷纷进入人工智能领域,催生了一大批技术的…

camunda流程定义表无数据_[Python04] 学习snakemake,三步轻松搭建生信流程!

随着学习的不断深入,分析的数据越来越多。你会发现,日常生信分析不过是调用一些相同的函数或者包分析不同的数据,换汤不换药。那么,如何把分析过程流程化,让数据像工厂的流水线一样自动被处理?最简单的法子…

基于centos5.8源码安装nginx之LNMP

LNMP 指的是什么呢,这里可以“望文生义”,其是linux NGINX Mysql PHP的组合。每一种工具的安装都有其特长来吸引我们去使用它,对此就要了解其组合的各个工具的特点:Linux:不用多说,这是我们都熟知的以开…

cheatengine找不到数值_“不会找问题”,只配在底层,最高效的思维方式导图,人生开挂!...

点击右上角【关注】,每天获取企业经营管理秘籍!总裁周刊,与您一同成长!声明:文章来源于zhang_liangj,不代表高管周刊立场,如有异议,请私信!文|张良计现在,我们…

比乐高便宜十倍!4合1电动遥控积木玩法百变

▲数据汪特别推荐点击上图进入玩酷屋小木用真金白银来给大家送礼物啦,特别感谢这些年一直以来大家对我们的支持,才让我们越做越好。(点我参与送礼活动)前几天与同事在聊天,他说小时候的梦想就是拥有很多很多的玩具。没…

python类库32[多线程同步Lock+RLock+Semaphore+Event]

2019独角兽企业重金招聘Python工程师标准>>> 一 多线程同步 由于CPython的python解释器在单线程模式下执行,所以导致python的多线程在很多的时候并不能很好地发挥多核cpu的资源。大部分情况都推荐使用多进程。 python的多线程的同步与其他语言基本相同…

加个ing是什么意思_take的意思竟然是“要求”?奇奇怪怪的熟词僻义打卡终于来了!...

慢慢来,比较快。只要不喊停,我们就继续。考研人被玩坏了,出题人:只要我不承认,就没有人能阻止我。下面盘点一下出题人的x操作:2020年英语二完形:trying,乍一看是不是和“尝试”有关&…

每日一笑 | 今天是植树节,我想在你心里种点逼树

全世界只有3.14 % 的人关注了数据与算法之美(图片来源于网络,侵权删)

怎么用计算机计算出选手最后得分,WPS技巧:TRIMMEAN函数计算选手得分

如图1就是某大奖赛的选手评分情况表。在“最后得分”一项中,我们可以用LARGE函数或SMALL函数来计算,如在J3中输入下面的公式:AVERAGE(LARGE(B3:I3,{2,3,4,5,6,7}))即可以得到正确的结果。这里,我们介绍ET提供的内部平均值函数——…

Windows 程序包管理器 1.0 正式发布

在 Microsoft Build 2021 开发者大会上,微软正式发布 Windows Package Manager(程序包管理器)1.0 正式版,目前在 GitHub 上已有超过 1600 个程序包可供下载。Windows 程序包管理器是一个综合的程序包管理器解决方案,由…

围棋天才柯洁怒怼央视国际记者,用实力斩获清华大学免试资格

全世界只有3.14 % 的人关注了数据与算法之美3月10 日,国家体育总局发布了《2019年优秀运动员免试入学推荐名单》,一批在体育领域获得亮眼成就的运动员们,将获得中国各所高校的免试入学机会。在名单上,数据汪找到一个熟悉的名字——…

计算机专业杀毒,计算机病毒查杀

面对计算机病毒日益剧增,普通人的电脑中病毒的几率越来越大,学习几招查杀病毒的方法,有助于保持系统安全运行也避免一些不必要的损失。下面是学习啦小编跟大家分享的是计算机病毒查杀,欢迎大家来阅读学习。计算机病毒查杀步骤/方法…

Azure 上的网站如何识别不同国家和地区的用户

点击上方蓝字关注“汪宇杰博客”导语跨国服务的网站通常需要针对不同国家和地区的用户显示不同的内容。通常我们会根据用户的IP地址识别Ta所在的国家和地区,而自己编写代码以及购买和维护IP数据库,或使用三方的IP数据服务,是潜在的996成本。虽…

中小学不得在校内设置食品经营场所,量子摩尔定律问世,美团运营摩拜亏45亿,英伟达史上最大手笔收购,这就是今天的大新闻。...

今天是3月12日农历二月初六今天星期二去吃饭老板问要饭的吗一兄弟说我要饭的我要饭怎么觉得这对话有点怪怪下面是今天的大新闻中小学不得在校内设置食品经营场所(中国新闻网)据教育部网站消息,由教育部、国家市场监督管理总局、国家卫生健康委…

轮廓处理函数详细

ApproxChains用多边形曲线逼近 Freeman 链 CvSeq* cvApproxChains( CvSeq* src_seq, CvMemStorage* storage, int methodCV_CHAIN_APPROX_SIMPLE, double parameter0, int minimal_perimeter0, int recursive0 ); src_seq涉及其它链的链指针storage存储多边形线段位置的缓存m…

html5与课程思政,“课程思政”怎样做

[本站讯 ]为了提升学校教师的课程思政意识和课程思政建设水平,提高课程思政优秀案例征集水平,5月21日,教学促进与教师发展中心举办了课程思政专题线上分享会.中心主任张树永出席会议,120位教师通过雨课堂参加了直播活动.“课程思政”怎样做?教学案例设计…

Windows 11 快速体验:开始菜单居中,全系圆角设计!

系统类型:Windows 11 专业工作站版 系统版本:Dev系统版本号:OS Build 21996.1任务栏 Windows 11 任务栏上的“开始”菜单和应用程序图标由此前 Windows 操作系统中的“左对齐”样式变为“居中”。如果你不喜欢“居中”可以通过个性化设置更改…

数学建模,还得这样学!

最近天气逐渐晴朗回温(伊芙布德干内库毛德川状态暂时告一阶段),数学建模的热度也在逐步回温(据说大家开始了数学建模知识储备),常有小伙伴私聊小天咨询关于数学建模的事情。春节假期也已经过去,…

测试Live Writer 发表博客

2019独角兽企业重金招聘Python工程师标准>>> 测试成功!!! 转载于:https://my.oschina.net/bonelwh/blog/125845

WPF 菜单栏滚动到顶部后固定的两种方法

最近项目中有这么个需求:菜单栏滚动到顶部后固定在顶部,专业的名词叫吸顶。。这在移动端还是比较常见的。看看效果:下面直接看看代码喽,代码不多:第一种方法思路:写一个和菜单一模一样的菜单,放…