使用 Tye 辅助开发 k8s 应用竟如此简单(二)
续上篇,这篇我们来进一步探索 Tye 更多的使用方法。本篇我们来了解一下如何在 Tye 中使用服务发现。
Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架。如果您是首次阅读本系列文章。建议可以先从本文末尾的入门文章开始了解。
服务发现 - 微服务开发不可缺少的部件
服务发现,就是新注册的这个服务模块能够及时的被其他调用者发现。不管是服务新增和服务删减都能实现自动发现。
《深入了解服务注册与发现》 https://zhuanlan.zhihu.com/p/161277955
我们在调用微服务的过程中,假设在调用某个 REST API 或者 Thrift API, 为了完成某次调用请求,代码里面需要指定服务所在的 IP 地址和端口,在传统的应用中,网络地址和端口是静态的,一般不会改变,我们只需要把它们配到配置文件中,就可以通过读取配置文件来完成调用。但是,在现代基于 Cloud 的微服务架构中,这种方式将失效,因为服务的实例是动态分配的地址,网络地址也是动态的,这样做的好处是便于服务的自动伸缩,失败处理和升级.
《微服务架构中的服务发现机制》 https://www.imooc.com/article/details/id/291255
简单来说,通过服务发现,服务之间可以使用名称来代替具体的地址和端口甚至访问细节。这样可以使得服务更加容易适用于云原生这种应用程序实例多变的环境。
首先,我们需要两个服务
和前篇一样,我们使用命令行来创建两个服务。
dotnet new sln -n TyeTest |
然后使用 tye init 创建 tye.yml。
便可以在 tye.yml 中得到如下内容:
name: tyetest |
这样我们就可以在本地使用 tye run 启动着两个服务。
接下来,我们会改造其中的 TyeTest 服务,使其调用 TyeTest2 作为其下游服务。
这样我们便可以验证服务发现的效果。
然后,使用 Tye.Configuration
添加包
运行以下命令,为 TyeTest 项目添加包:
dotnet add ./TyeTest/TyeTest.csproj package Microsoft.Tye.Extensions.Configuration --version 0.6.0-alpha.21070.5 |
添加 HttpClientFactory
由于我们需要使用 HttpClient 调用下游服务,因此需要使用到 HttpClientFactory。故而,在 TyeTest 项目的 Startup.cs 增加对 HttpClientFactory 的注册。
public void ConfigureServices(IServiceCollection services) |
使用 HttpClient 调用服务
进入 WeatherForecastController, 我们使用 HttpClient 来调用下游服务,并且将得到的数据返回:
using System; |
值得注意的是:
- 构造函数中注入的
IConfiguration是 Aspnet Core 的内在机制,无需特殊注册。 _configuration.GetServiceUri("tyetest2")是本示例的关键点。其通过一个服务名称来获取服务的具体 Uri 地址,这样便可以屏蔽部署时,服务地址的细节。
这样,就结束了。
接下来只要使用 tye run 便可以在本地查看已经改造好的服务。调用第一个服务的接口,并可以得到预期的从第二个服务返回的数据。
关于 Tye 中服务发现的真实运作机制可以前往官方文库进行了解:
https://github.com/dotnet/tye/blob/master/docs/reference/service_discovery.md#how-it-works-uris-in-development
最后,发到 K8S 里面试一下
若要发布到 k8s 进行测试,只要按照前篇的内容,设置到 docker registry 和 ingress 便可以进行验证了。
开发者可以自行配置并尝试。
小结
本篇,我们已经顺利完成了使用 Tye 来完成服务发现机制的使用。通过这种方式,我们便可以使用服务名对服务之间进行相互调用,从而屏蔽具体的部署细节,简化开发。
不过,在实际生产实际中,服务之间并非仅仅只有主机和端口两个信息。有时还需要进行用户名、密码和额外参数的设置。典型的就是对数据库连接字符串的管理。
下一篇,我们将进一步在 Tye 中如何对数据库进行链接。
最后但是最重要!
如果读者对该内容感兴趣,欢迎转发、评论、收藏文章以及项目。
最近作者正在构建以反应式、Actor模式和事件溯源为理论基础的一套服务端开发框架。希望为开发者提供能够便于开发出 “分布式”、“可水平扩展”、“可测试性高” 的应用系统 ——Newbe.Claptrap
本篇文章是该框架的一篇技术选文,属于技术构成的一部分。
联系方式:
您还可以查阅本系列的其他选文:
理论入门篇
术语介绍篇
- Actor 模式
- 事件溯源(Event Sourcing)
- Claptrap
- Minion
- 事件 (Event)
- 状态 (State)
- 状态快照 (State Snapshot)
- Claptrap 设计图 (Claptrap Design)
- Claptrap 工厂 (Claptrap Factory)
- Claptrap Identity
- Claptrap Box
- Claptrap 生命周期(Claptrap Lifetime Scope)
- 序列化(Serialization)
实现入门篇
- Newbe.Claptrap 框架入门,第一步 —— 创建项目,实现简易购物车
- Newbe.Claptrap 框架入门,第二步 —— 简单业务,清空购物车
- Newbe.Claptrap 框架入门,第三步 —— 定义 Claptrap,管理商品库存
- Newbe.Claptrap 框架入门,第四步 —— 利用 Minion,商品下单
样例实践篇
开发工具篇
其他番外篇
- 谈反应式编程在服务端中的应用,数据库操作优化,从 20 秒到 0.5 秒
- 谈反应式编程在服务端中的应用,数据库操作优化,提速 Upsert
- 十万同时在线用户,需要多少内存?——Newbe.Claptrap 框架水平扩展实验
- docker-mcr 助您全速下载 dotnet 镜像
- 十多位全球技术专家,为你献上近十个小时的.Net 微服务介绍
- 年轻的樵夫哟,你掉的是这个免费 8 核 4G 公网服务器,还是这个随时可用的 Docker 实验平台?
- 如何使用 dotTrace 来诊断 netcore 应用的性能问题
- 只要十步,你就可以应用表达式树来优化动态调用
GitHub 项目地址:https://github.com/newbe36524/Newbe.Claptrap
Gitee 项目地址:https://gitee.com/yks/Newbe.Claptrap
您当前查看的是先行发布于 www.newbe.pro 上的博客文章,实际开发文档随版本而迭代。若要查看最新的开发文档,需要移步 claptrap.newbe.pro。

- 本文作者: newbe36524
- 本文链接: https://www.newbe.pro/Newbe.Claptrap/Try-Tye-2/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
使用 Tye 辅助开发 k8s 应用竟如此简单(二)的更多相关文章
- 使用 Tye 辅助开发 k8s 应用竟如此简单(一)
最近正巧在进行 Newbe.Claptrap 新版本的开发,其中使用到了 Tye 来辅助 k8s 应用的开发.该系列我们就来简单了解一下其用法. Newbe.Claptrap 是一个用于轻松应对并发问 ...
- 使用 Tye 辅助开发 k8s 应用竟如此简单(三)
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们来了解一下如何在 Tye 中如何对数据库进行链接. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次 ...
- 使用 Tye 辅助开发 k8s 应用竟如此简单(四)
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们来了解一下如何在 Tye 中如何进行日志的统一管理. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首 ...
- 使用 Tye 辅助开发 k8s 应用竟如此简单(五)
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们来了解一下如何在 Tye 中实现对分布式链路追踪. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次 ...
- 使用 Tye 辅助开发 k8s 应用竟如此简单(六)
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们将进一步研究 Tye 与分布式应用程序运行时 Dapr 如何碰撞出更精彩的火花. Newbe.Claptrap 是一个用于轻松应对并发问题 ...
- 使用 Tye 辅助开发 dotnet 应用程序
newbe.pro 已经给我们写了系列文章介绍Tye 辅助开发k8s 应用: 使用 Tye 辅助开发 k8s 应用竟如此简单(一) 使用 Tye 辅助开发 k8s 应用竟如此简单(二) 使用 Tye ...
- WPF 辅助开发工具
原文:WPF 辅助开发工具 以下介绍的工具均为免费版,有些是源代码开放,希望对大家有用. Kaxaml 轻量级XAML 编辑器,可以同时进行图像和XAML 代码的编辑.最终生成开发人员想要的XAML ...
- python辅助开发模块(非官方)如pil,mysqldb,openpyxl,xlrd,xlwd
官方文档 只是支持win32, 不支持win64 所以很麻烦 民间高人,集中做了一堆辅助库,下载后,用python安装目录下的scripts中,pip和easy_install就可以安装了 pytho ...
- Android辅助开发工具合集
https://github.com/389273716/android-skill-summary/blob/master/开发工具使用指南/辅助开发工具.md
随机推荐
- update 表名 set 某列名=now() where user in('user1','user2','user3');
update 表名 set 某列名=now() where user in('user1','user2','user3');
- 【Linux】一个网卡部署多个内网ip
1.用root权限的用户登录CENTOS,进入network-scripts文件夹下(本步骤可以省略,与二步骤一起完成): shell命令:cd /ect/sysconfig/network-scri ...
- CTFHub - Web(二)
目录遍历: 法一: 依次查看目录即可: 法二: 利用脚本: #!/usr/bin/python3 # -*- coding: utf-8 -*- # --author:valecalida-- ...
- GitLab-CI/CD入门实操
以Spring boot项目为例.传统方式是本地生成jar包,FTP上传服务器,重启服务:如果是内网测试服,也可以在服务器上安装git,在服务器上编译打包.但这都需要人为干预,于是CI/CD就出现了. ...
- 你这样用过DO循环吗?
DATA: BEGIN OF text, word1(4) TYPE c VALUE 'This', word2(4) TYPE c VALUE 'is', ...
- Pytorch 中张量的理解
张量是一棵树 长久以来,张量和其中维度的概念把我搞的晕头转向. 一维的张量是数组,二维的张量是矩阵,这也很有道理. 但是给一个二维张量,让我算出它每一行的和,应该用 sum(dim=0) 还是 sum ...
- 聊一聊:Service层你觉得有用吗?
前段日子在社群(点击加入)里看到有人讨论关于Service层接口的问题,DD也经常碰到周围的新人有问过一些类似的问题:一定要写个Service层的接口吗?Service层的接口到底用做什么用的呢?好像 ...
- "INVALID" is not a valid start token
Search · is not a valid start token https://github.com/prometheus/prometheus/search?q=is+not+a+valid ...
- WPF入门学习(转)
WPF基础知识 总结的学习WPF的几点基础知识: 1) C#基础语法知识(或者其他.NET支持的语言):这个是当然的了,虽然WPF是XAML配置的,但是总还是要写代码的,相信各位读者应该也都有这个基础 ...
- Linux 中的文件属性
文件属性 d 开头是: 目录文件.l 开头是: 符号链接(指向另一个文件,类似于瘟下的快捷方式).s 开头是: 套接字文件(sock).b 开头是: 块设备文件,二进制文件.c 开头是: 字符设备文 ...