avatar
在Kubernetes上gRPC是如何通过Headless Service负载均衡

在Kubernetes上gRPC是如何通过Headless Service负载均衡

星期一,十二月 20 日,2021 年

gRPC 是用于进程间通信的最流行的现代 RPC 框架之一。 它是微服务架构的绝佳选择。 而且,毫无疑问,部署微服务应用程序最流行的方式是 Kubernetes。

Kubernetes部署可以具有相同的后端实例,为许多客户端请求提供服务。 Kubernetes 的 ClusterIP 服务提供负载均衡的IP地址。 但是这种默认的负载平衡不适用于gRPC开箱即用。

如果你使用gRPC并在 Kubernetes 上部署了许多后端服务,那么本文档适合你。

avatar归零
3 分钟阅读
关于Go1.18你想知道的都在这里

关于Go1.18你想知道的都在这里

星期日,十二月 19 日,2021 年

原文:https://betterprogramming.pub/golang-1-18-what-you-need-to-know-a5701f7e14ab 在Go 1.18中,有两件大事是你需要知道的。类型参数(在其他语言中称为泛型)和模糊测试,但为什么它们如此重要? Golang团队正在努力开发Go1.18,该版本将于2022年2月发布,它将是一个大的版本。Go1.18将引入泛型和模糊测试,这有可能彻底改变我们开发和测试Go程序的方式。我们将在下面看一下这两个新特性。 类型参数 类型参数将允许Go程序员用占位符类型名称定义函数和方法。这将允许开发人员编写可以在项目的不同部分重复使用的代码,但仍然可以对他们期望支持的所有数据类型进行通用处理。 让我们来看看一个普通的Go函数(在1.18之前),计算两个数中较小的一个数。 func min(a, b int) int { if a < b { return a } return b } 上面这个方法中,我们把两个整数作为参数,min(1,2)和min(2,1)都将返回1。到目前为止还不错,但是当你想得到两个浮点数的较小值时,怎么办呢?我们将不得不写一个新的函数,它需要两个浮点数作为参数,而且我们不能重复使用第一个函数的代码。函数的主体仍然是完全相同的代码。如果我们想得到两个float64数的较小值,我们将不得不再次编写相同的函数,以float64作为参数。 现在让我们来看看Go的泛型。你现在可以用一个任意的占位符类型名称来定义函数,这个名称将作为其他类型的参数。在Go中,泛型是以类型T的形式来写的。 这意味着你可以用任何占位符类型的名字来定义一个函数,这个名字以后会被另一个参数填入。现在我们用新的泛型方法重构之前的例子。 type numeric interface { type int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, float32, float64 } func min[T numeric](a, b T) T { if a < b { return a } return b } 如上,这段代码有点长。首先,我们定义一个接口,它将所有的数字类型声明为numeric的新类型。这意味着我们可以在泛型中使用float64和int。然后,像之前一样,我们定义一个新的min函数。 不同的是,现在这个函数在头部有一个类型参数:min[T numeric]…. 这告诉Go,类型T应该是一个数字类型,所以是我们在接口中声明的任何类型。然后,像以前一样我们声明一个函数,只不过我们用T代替了int。 如果新的函数现在被调用,Go会检查用户提供的类型是否符合接口的要求。如果是的话,它将在整个函数中用该类型替换Tw。因此,如果我们输入一个int类型的数字,我们也会得到一个整数的回报。如果我们输入一个float64,我们将得到一个float64的返回值,以此类推。因此,我们现在有了一个单一的 “全能 “函数,而不是写12个内容完全相同的函数,但对Go中的每个数字类型都有不同的参数类型。
@ 归零
1 分钟阅读
Kubernetes中Go服务的远程debug

Kubernetes中Go服务的远程debug

星期二,十二月 7 日,2021 年

作为开发人员,我们总是会遇到一些bug本地无法模拟,需要在通过远程方式排查,本教程介绍如何配置远程debug Kubernetes上的Go服务,通过本教程,你会学到:

  • 通过dlv工具远程debug 用Go写的服务
  • vscode配置远程debug
avatar归零
1 分钟阅读
Dapr中的Actor模型

Dapr中的Actor模型

星期四,四月 22 日,2021 年

原文链接:https://docs.dapr.io/developing-applications/building-blocks/actors/actors-overview/

介紹

Actor模型将Actor描述为最低层次的 “计算单元”。换句话说,你把代码写在一个独立的单元(称为Actor)中,这个单元每次接收消息并处理它们,没有任何并发或线程。

当你的代码处理一条消息时,它可以发送一条或多条消息给其他Actor,或者创建新的Actor。底层运行时管理每个Actor的运行方式、时间和地点,并在角色之间路由消息。

大量的actor可以同时执行,而且actor之间可以独立执行。

Dapr包括一个专门实现虚拟Actor模式的运行时。通过Dapr的实现,你可以根据Actor模式编写Dapr的actors,Dapr利用底层平台提供可扩展性和可靠性保证。

avatar归零
1 分钟阅读
Arthas反编译更新线上代码

Arthas反编译更新线上代码

星期一,四月 12 日,2021 年

很多时候,出现线上问题,我们需要紧急修复程序并立马生效,使线上问题影响最小,所以我们需要线上更新部分程序,今天就以热更新com.example.demo.arthas.user.UserController为例,介绍Arthas工具如何热更新线上代码。

1. 下载arthas工具并运行

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
avatar归零
1 分钟阅读
Jupyter Notebook添加conda环境

Jupyter Notebook添加conda环境

星期六,六月 27 日,2020 年

本篇博客介绍如何将conda中python环境添加到Jupyter notebook中.

1. 安装ipykernel

conda install ipykernel
@ 归零
1 分钟阅读
如何修改mongo文档中数组元素的内容

如何修改mongo文档中数组元素的内容

星期一,三月 30 日,2020 年

在平时开发中,我们可能会遇到修改mongodb文档数组里边元素的值,那如何修改数组中元素的值呢? 其实mongodb 提供了update set指令, 可以实现我们的需求,具体如下:

比如,我们的文档格式如下:

{
    "categories": ["新闻","图片"]
}
@ 归零
1 分钟阅读
“机器学习通用工作流程”

“机器学习通用工作流程”

星期一,六月 10 日,2019 年

机器学习的通用工作流程总结为如下几个步骤:

1. 定义问题,收集数据集

首先我们必须先定义多面对的问题。

  1. 输入的数据是什么?你要预测什么?
  2. 你面对的是什么类型的问题?二分类问题、多分类问题、标量回归问题
    向量回归问题还是其他问题,确定问题类型,有助于选择模型架构,损失函数。
    同时做出如下假设
  • 假设输出可以根据输入进行预测
  • 假设可用数据包含足够多的信息,足以学习输入和输出之间的关系
@ 归零
1 分钟阅读
Pandas

Pandas

星期三,四月 10 日,2019 年

Pandas 速查手册

对于数据科学家,无论是数据分析还是数据挖掘,如果用 Python作为工具,Pandas是一个非常重要的Python包,它不仅提供了很多方法,是的数据处理变得非常简单,同时由于底层使用Numpy,使得数据处理的速度也很快,比Python内置的方法有很大优势。

Pandas包导入

import pandas as pd
import numpy as np
@ 归零
1 分钟阅读

© 2014 - 2022 Lionel's Blog

Powered by Hugo with theme Dream.