小编Kim*_*ers的帖子

使用Kubernetes的多个环境(分段,QA,生产等)

K8S用于管理多种环境(QA,分期,生产,开发等)被认为是一种很好的做法?

例如,假设一个团队正在开发一个需要部署一些API的产品,以及一个前端应用程序.通常,这将需要至少2个环境:

  • 暂存:在发布到客户端之前进行迭代/测试和验证
  • 生产:这是客户可以访问的环境.应包含稳定且经过良好测试的功能.

因此,假设团队正在使用Kubernetes,那么托管这些环境的好习惯是什么?到目前为止,我们考虑了两个选择:

  1. 为每个环境使用K8s群集
  2. 仅使用一个K8s群集并将它们保存在不同的命名空间中.

(1)似乎是最安全的选择,因为它可以最大限度地降低潜在的人为错误和机器故障的风险,从而使生产环境处于危险之中.但是,这需要更多主机的成本以及更多基础架构管理的成本.

(2)看起来它简化了基础架构和部署管理,因为只有一个集群,但它提出了一些问题,如:

  • 如何确保人为错误可能会影响生产环境?
  • 如何确保登台环境中的高负载不会导致生产环境中的性能损失?

可能还有其他一些问题,因此我正在与StackOverflow上的K8社区联系,以便更好地了解人们如何应对这些挑战.

kubernetes

84
推荐指数
7
解决办法
2万
查看次数

是否可以使用Rust宏在程序上声明变量?

基本上,这个问题有两个部分:

  1. 你可以将未知标识符传递给Rust中的宏吗?

  2. 你能组合字符串在Rust宏中生成新的变量名吗?

例如,类似于:

macro_rules! expand(
  ($x:ident) => (
    let mut x_$x = 0;
  )
)
Run Code Online (Sandbox Code Playgroud)

调用expand!(hi)明显失败,因为hi是一个未知的标识符; 但你能以某种方式这样做吗?

即.在C中的等价物如下:

#include <stdio.h>
#define FN(Name, base) \
  int x1_##Name = 0 + base; \
  int x2_##Name = 2 + base; \
  int x3_##Name = 4 + base; \
  int x4_##Name = 8 + base; \
  int x5_##Name = 16 + base;

int main() {
  FN(hello, 10)
  printf("%d %d %d %d %d\n", x1_hello, x2_hello, x3_hello, x4_hello, x5_hello);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

你为什么这么说,多么可怕的主意.你为什么要这样做? …

macros rust

12
推荐指数
3
解决办法
3896
查看次数

如何以所有可用精度打印Rust浮点数?

我正在实现sin三角函数的CORDIC算法.为了做到这一点,我需要硬编码/计算一堆反正切值.现在我的功能似乎可以工作(由Wolfram Alpha验证)到打印的精度,但我希望能够打印我的所有32位精度f32.我该怎么办?

fn generate_table() {
    let pi: f32 = 3.1415926536897932384626;
    let k1: f32 = 0.6072529350088812561694; // 1/k
    let num_bits: uint = 32;
    let num_elms: uint = num_bits;
    let mul: uint = 1 << (num_bits - 2);

    println!("Cordic sin in rust");
    println!("num bits {}", num_bits);
    println!("pi is {}", pi);
    println!("k1 is {}", k1);

    let shift: f32 = 2.0;
    for ii in range(0, num_bits) {
        let ipow: f32 = 1.0 / shift.powi(ii as i32);
        let cur: …
Run Code Online (Sandbox Code Playgroud)

formatting rust cordic

9
推荐指数
2
解决办法
3917
查看次数

如何从常量值和值集合生成`quote :: Tokens`?

我正在创建一个在枚举上运行的自定义派生.我想生成像这样的代码

match *enum_instance {
    EnumName::VariantName1 => "dummy",
    EnumName::VariantName2 => "dummy",
    EnumName::VariantName3 => "dummy",
}
Run Code Online (Sandbox Code Playgroud)

我已经能够使用这样的代码使用它:

let enum_name = &ast.ident;
let mut q = quote! {};

q.append_all(e.iter().map(|variant| {
    let variant_name = &variant.ident;
    quote! { #enum_name::#variant_name => "dummy", }
}));

quote! {
    impl FullName for #name {
        fn full_name(&self) -> &'static str {
            match *self {
                #q
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

要求临时变量并执行append_all感觉非常不优雅.有更清洁的解决方案吗?

构建MCVE的代码

SRC/main.rs

#[macro_use]
extern crate my_derive;

#[derive(FullName)]
enum Example {
    One,
    Two,
    Three,
}

trait FullName …
Run Code Online (Sandbox Code Playgroud)

macros rust

5
推荐指数
1
解决办法
479
查看次数

标签 统计

rust ×3

macros ×2

cordic ×1

formatting ×1

kubernetes ×1