使用 Tye 辅助开发 k8s 应用竟如此简单(六)

续上篇,这篇我们来进一步探索 Tye 更多的使用方法。本篇我们将进一步研究 Tye 与分布式应用程序运行时 Dapr 如何碰撞出更精彩的火花。

巧了,巧了,真是巧了

今天正值 dapr 1.0 发布的日子。如果你暂时还不了解什么是 dapr。

那不如通过以下简短的视频来了解一下什么是 dapr:

https://www.bilibili.com/video/BV1xz4y167XA/

简单来说, dapr 为开发者提供了一个开发云原生应用所需构件的一个抽象层。透过这个抽象层,开发者可以节约很多基础设施上所需要投入的精力,进一步得到自我解放。

安装 Dapr runtime

为了在开发环境运行 dapr runtime。需要先在开发机上进行一些简单的安装。

开发者可以通过 dapr 文档库中的 get started 章节来了解如何在本地初始化开发环境:

https://docs.dapr.io/getting-started/

当然,你也可以通过社区提供的中文文档库来了解相关过程:

https://dapr-cn.gitee.io/getting-started/

dapr 中文社区致力于为中文用户提供更加易读的 dapr 文档中文译制内容。现在,我们仍然需要更多志同道合的伙伴一同献力,协作奋进。如果您有意愿,欢迎前往项目首页进行了解:https://github.com/dapr-cn/docs

创建测试应用

首先,我们创建一个和 {% post_link Newbe.Claptrap/Try-Tye-2 %} 中提到一样的测试用例。

即,包含两个服务的测试应用。

然后,修改tye.yml以加入 dapr 扩展:

name: tyetest
extensions:- name: dapr
services:- name: tyetestproject: TyeTest/TyeTest.csproj- name: tyetest2project: TyeTest2/TyeTest2.csproj

运行tye run,便可以在 tye dashboard 中查看成功运行的服务实例和 dapr 实例:

dapr instance

使用 swagger 页面,可以正常的访问服务。

同时,按照 dapr http 访问服务也是可以的:

GET http://localhost:5295/v1.0/invoke/tyetest/method/WeatherForecast

使用以上方式访问得到的结果和 swagger 得到的一样。其中 5295 端口就是上图中所示的 dapr http 终结点。可以通过日志查看到这个信息:

[tyetest-dapr_6432571f-b]:C:\Users\Administrator/.dapr/bin/daprd.exe -app-id tyetest -app-port 5290 -dapr-grpc-port 5294 --dapr-http-port 5295 --metrics-port 5296 --placement-host-address localhost:5289

这便是使用 tye 简化 dapr 应用开发的简易示例。

来点复杂的例子

下面,我们来尝试运行 Newbe.Claptrap 的最新模板项目,体验一下 Tye 与 dapr 结合的强力效果。

安装项目模板

进入 nuget.org 查询最新的 Newbe.Claptrap.Template 版本,并且使用界面上的命令行安装项目模板:

https://www.nuget.org/packages/Newbe.Claptrap.Template/

dotnet new --install Newbe.Claptrap.Template::0.9.4

使用模板创建项目

创建一个文件夹,然后在文件夹中运行以下命令以创建项目:

dotnet new newbe.claptrap --name HelloClaptrap

部署辅助组件

新建好的项目中存在一个docker-compose.yml文件,用于开发者部署 seq 和 zipkin 等等辅助组件。

将此文件移动到单独的位置,使用docker-compose up -d便可以顺利启动服务。

当然,开发者也可以自行采用其他方式部署,或者不要部署。这并非必要的内容。

启动项目

在解决方案文件夹,使用tye run便可以顺利启动项目。启动之后可以在 tye dashboard 上查看到项目模板包含的所有项目:

newbe.claptrap service

进入helloclaptrap-webapi服务的 swagger 页面。调用/AuctionItems/{itemId}/statusAPI:

newbe.claptrap AuctionItems

这就说明服务已经全部启动成功了。

这实际上是一个拍卖竞价的样例项目。更多的细节可以前往 https://claptrap.newbe.pro 进行了解。

调用之后可以在 Jaeger UI 上查看到服务之间的调用关系和性能细节:

newbe.claptrap AuctionItems

小结

本篇,我们尝试了 Tye 和 Dapr 的联动操作。初步体验了一下 dapr 的特性。

开发者如果想要了解更多关于 dapr 的内容,欢迎阅读官网文档进行了解。

至此,本系列也就告一段落。如果您觉得本系列内容对您有所帮助,欢迎转发、评论、收藏文章以及项目。

本系列所有测试代码,均可以在以下仓库查看:

https://github.com/newbe36524/Newbe.Demo/tree/master/src/BlogDemos/Newbe.Tye

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

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

相关文章

eval() php,js-eval编码,js-eval解码

实例例子 1在本例中,我们将在几个字符串上运用 eval(),并看看返回的结果:eval("x10;y20;document.write(x*y)")document.write(eval("22"))var x10 document.write(eval(x17))输出:200 4 27例子 2看一下在其他…

李阳疯狂英语300句

1.Absolutely.(用于答话)是这样;当然是;正是如此;绝对如此。2.Absolutely impossible!绝对不可能的!3.All I have to do is learn English. 我所要做的就是学英语。4.Are you free tomorrow?你明天有空吗?5.Are you married?你结婚了吗?6.…

python函数用于创建对象_Python-创建类并使用函数更改其对象值

有人建议我把这个重新贴出来以便更清楚。上完一节课,剩下的就不上这节课了。欢迎任何指导。我已经得出了这个问题的一部分,在那里我坚持要保持简短。我还附上了我的工作。在下面的工作中,我希望能够创建一个包含一个变量的类。我希望能够更改…

BeetleX.WebFamily针对Web SPA应用的改进

BeetleX.WebFamily1.0在集成vueelementaxios的基础上添加应用页、窗体布局和登陆验证等功能。通过以上功能开发Web SPA应用时只需要编写vue控件和配置菜单即可实现应用开发。使用创建一个.net控制台项目,然后通过Nuget引入BeetleX.WebFamily1.0组件,并在…

php acl rbac,建站常用的用户权限管理模型ACL和RBAC的区别

常用的权限管理模型ACL和RBAC的区别1.ACLACL是最早也是最基本的一种访问控制机制,它的原理非常简单:每一项资源,都配有一个列表,这个列表记录的就是哪些用户可以对这项资源执行CRUD中的那些操作。当系统试图访问这项资源时&#x…

测光

所谓测光其实就是指数码相机根据环境光线系统依靠特定的测量方式而给出的光圈/快门组合的方式。简单的说,也就是对被摄物体的受光情况进行测量。一般来说,测光主要是测定被拍摄对象反射到镜头中的光亮度然后在根据这一亮度给出一定的光圈快门速度组合。而…

python3怎么安装gmpy2_python2/3 模块gmpy2在linux下安装

!!!首先建议在Windows下安装 因为很方便!!!gmpy2是解密RSA时所用脚本的一个模块python下输入 import gmpy2 ,提示 Traceback (most recent call last): File"", line 1, in ImportError: No mod…

华为年终奖,小员工分百万!任正非:钱给多了,不是人才也变成了人才!

华为今年又提前发了巨额年终奖,并公布了新的奖金方案,23级奖金额有近百万,并且宣称“上不封顶、绝不拖欠”,一时间引起热议。任正非签发的内部文件:华为不搞按资排辈,只要做出突出贡献,在新方案…

Redis缓存穿透、缓存雪崩、缓存击穿好好说说

前言 Redis是目前非常流行的缓存数据库啦,其中一个主要作用就是为了避免大量请求直接打到数据库,以此来缓解数据库服务器压力;用上缓存难道就高枕无忧了吗?no,no,no,没有这么完美的技术, 缓存穿透、缓存雪崩…

php字符串赋值给变量,JavaScript-如何将一个PHP字符串安全赋值给Javascript变量(包含引号和换行符的)...

php json_encode输出变量,在js使用(不是赋值)的时候转换成相应的字符串进行操作.注意:因为中文在json_encode会出问题。因此大家写了一个第三方的json_encode;class json {function __construct() {}function encode($array) {$this -> arrayRecursiv…

小计 合计 -统计

create table [tb]([客户编码] varchar(10),[客户名称] varchar(10),[数量] int) insert [tb] select 001,A,2 union all select 001,A,3 union all select 001,A,4 union all select 002,B,1 union all select 002,B,2 --统计 select * from (select * from tb union all s…

这是“我”的故事 —— 董彬

点击蓝字 关注我们作者:董彬校对/文章优化:刘轶民排版:Rani视频地址:https://www.bilibili.com/video/BV1NK4y1p7Ys与世界周旋的程序员大家好,我叫董彬 ,现就职于野村信息, Title 是 Senior …

我用Python玩小游戏“跳一跳”,瞬间称霸了朋友圈!

“从前几天微信最新版本 6.6.1 的更新开始,微信小程序游戏“跳一跳”似乎在一夜之间风靡了朋友圈。它甚至比五六年前的飞机大战游戏都火爆,这种小游戏的火爆不仅仅是因为有魔性、有意思,更重要的是可以进行好友 PK!“跳一跳”的小…

expsky.php,Typecho漏洞利用工具首发,半分钟完成渗透

原标题:Typecho漏洞利用工具首发,半分钟完成渗透*本文原创作者:expsky,本文属FreeBuf原创奖励计划,未经许可禁止转载声明:本工具由expsky原创,仅用于技术研究,不恰当使用会对网站造成…

游标 和 锁的概述

--用游标 declare str varchar(100) --定义游标 declare DZCursor CURSOR for SELECT test_str FROM test where test_strxxx --打开游标 open DZCursor --从游标取记录 fetch next from DZCursor into str --当有记录 while fetch_status0 begin insert into test (tes…

BeetleX之Web网关1.5.7安装使用

新版的网关主要升级到BeetleX最新版提高http协议的解释性能,从而让网关的吞吐能力进一步提升,在功能界面上也做了简单的调整让操作更方便,修复linux下无权限启动进程问题。如果在windows上不想用IIS,linux下用nginx怕麻烦&#xf…

JAVA world转图片,将Kinect深度图像转换为真实世界坐标

我正在使用kinect,使用OpenNI 2.x,c,OpenCV .我能够获得kinect深度流并获得灰度cv :: Mat . 只是为了说明它是如何定义的:cv::Mat m_depthImage;m_depthImage cvCreateImage(cvSize(640, 480), 8, 1);我想最接近的值用“0”表示&a…

费马大定理,集惊险与武侠于一体

悬案费马大定理从提出到证明的过程,就是一部不折不扣的惊险小说。一个读者,在自己看过的书空白处留下附注。除了他自己,还有谁会关注呢?但是,法国人费马死后,他在一本《算术》书上所写的注记并没有随之湮没…

全国计算机技术与软件专业技术资格(水平)考试基础知识

全国计算机技术与软件专业技术资格(水平)考试基础知识 -------------------------------------------------------------------------------- 1、什么是计算机技术与软件专业技术资格(水平)考试?  计算机技术与软件专…

python中pd series_python-比较pd.Series并在该系列不包含None时获得异常结果

我想知道为什么将两个相同的系列与None值进行比较会返回False:pd.Series([x, y, None]) pd.Series([x, y, None])0 True1 True2 Falsedtype: bool我希望所有结果都是正确的.如果我从系列中创建一个数组,并进行比较,我将得到预期的结果:pd.Series([x, y,…