保持可爱mmm_个人页

保持可爱mmm
66
12791
0

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息

2020年02月

  • 02.20 17:25:58
    发表了文章 2020-02-20 17:25:58

    云原生必备知识: 负载均衡

    负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。 负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。
  • 02.20 17:24:39
    发表了文章 2020-02-20 17:24:39

    云原生必备知识: 持久化数据卷

    PersistentVolume(PV)是已经由管理员提供或者动态使用供应的集群中的一块存储的存储类。它是集群中的资源,就像节点是集群资源一样。PV是类似于Volumes的卷插件,但是其生命周期独立于使用PV的任何单个Pod。此API对象捕获NFS,iSCSI或特定于云提供商的存储系统的存储实现的详细信息。 PersistentVolume 持久卷,简称PV,对存储的具体实现,供集群使用。
  • 02.20 17:22:50
    发表了文章 2020-02-20 17:22:50

    Kubernetes必备知识: StorageClass

    StorageClass提供了一种描述存储类(class)的方法,不同的class可能会映射到不同的服务质量等级和备份策略或其他策略等。 StorageClass 对象中包含 provisioner、parameters 和 reclaimPolicy 字段,当需要动态分配 PersistentVolume 时会使用到。当创建 StorageClass 对象时,设置名称和其他参数,一旦创建了对象就不能再对其更新。也可以为没有申请绑定到特定 class 的 PVC 指定一个默认的 StorageClass 。
  • 02.20 17:21:16
    发表了文章 2020-02-20 17:21:16

    Kubernetes必备知识: StatefulSet

    StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计),其应用场景包括  稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于PVC来实现  稳定的网络标志,即Pod重新调度后其PodName和HostName不变,基于Headless Service(即没有Cluster IP的Service)来实现  有序部署,有序扩展,即Pod是有顺序的
  • 02.20 17:18:14
    发表了文章 2020-02-20 17:18:14

    云原生必备知识: Sidecar

    sidecar是一种将应用功能从应用本身剥离出来作为单独进程的设计模式,可以允许向应用中无侵入的添加功能,避免为了满足第三方需求而添加额外的代码。 在软件架构中,sidecar附加到主应用,或者叫父应用上,以扩展/增强功能特性,同时sidecar与主应用是松耦合的。
  • 02.20 17:17:01
    发表了文章 2020-02-20 17:17:01

    Pod必备知识: ServiceAccounts

    ServiceAccount主要用于解决Pod在集群中的身份认证问题,其中认证使用的授权信息,则利用Secret(type=kubernetes.io/service-account-token)进行管理。
  • 02.20 17:15:13
    发表了文章 2020-02-20 17:15:13

    Kubernetes必备知识: Selectors

    Label不是唯一的,很多object可能有相同的label。 通过label selector,客户端/用户可以指定一个object集合,通过label selector对object的集合进行操作。
  • 02.20 17:13:39
    发表了文章 2020-02-20 17:13:39

    Pod必备知识: SecurityContexts

    Security Context主要用于限制容器的行为,从而保障系统和其他容器的安全。这一块的能力不是 Kubernetes 或者容器 runtime 本身的能力,而是 Kubernetes 和 runtime 通过用户的配置,最后下传到内核里,再通过内核的机制让 SecurityContext 来生效。所以这里介绍的内容,会比较简单或者说比较抽象一点。 1.容器级别的Security Context:仅对指定容器生效 2.Pod级别的Security Context:对指定Pod中的所有容器生效 3.Pod Security Policies(PSP):对集群内所有Pod生效
  • 02.20 17:12:08
    发表了文章 2020-02-20 17:12:08

    JAVA必备知识: RuntimeClass

    Runtime之Class结构 runtime(内存管理) 运行时刻是指一个程序在运行(cc或者在被执行)的状态。也就是说,当你打开一个程序使它在电脑上运行的时候,那个程序就是处于运行时刻。在一些编程语言中,把某些可以重用的程序或者实例打包或者重建成为“运行库"。这些实例可以在它们运行的时候被链接或者被任何程序调用。 开发者有时候会在什么东西应该在编译的时候加载进来以及什么东西该在运行的时候使用之间做出抉择,前者有时候被称为编译时期。 一段时间以来,技术类作者都拒绝使用"运行时刻"作为一种术语,他们坚持类似于"一个程序在运行"之类的说法,用以避免需要一个专门的术语。后来,这个术语逐渐地蔓延到通
  • 02.20 17:09:30
    发表了文章 2020-02-20 17:09:30

    Pod必备知识: ReadinessProbes

    Readiness 指针用来判断这个容器是否启动完成,即 pod 的 condition 是否 ready。如果探测的一个结果是不成功,那么此时它会从 pod 上 Endpoint 上移除,也就是说从接入层上面会把前一个 pod 进行摘除,直到下一次判断成功,这个 pod 才会再次挂到相应的 endpoint 之上。
  • 02.20 17:07:59
    发表了文章 2020-02-20 17:07:59

    Kubernetes必备知识: pod网络模型

    k8s对Pods之间如何进行组网通信提出了要求,k8s对集群的网络有以下要求: • 所有的Pods之间可以在不使用NAT网络地址转换的情况下相互通信 • 所有的Nodes之间可以在不使用NAT网络地址转换的情况下相互通信 • 每个Pod自己看到的自己的ip和其他Pod看到的一致
  • 02.20 17:03:03
    发表了文章 2020-02-20 17:03:03

    云原生必备知识: POD

    Pod实际上是容器的集合,在k8s中对运行容器的要求为:容器的主程序需要一直在前台运行,而不是后台运行。应用可以改造成前台运行的方式,例如Go语言的程序,直接运行二进制文件;java语言则运行主类;tomcat程序可以写个运行脚本。或者通过supervisor的进程管理工具,即supervisor在前台运行,应用程序由supervisor管理在后台运行。具体可参考supervisord。
  • 02.20 17:01:27
    发表了文章 2020-02-20 17:01:27

    Kubernetes必备知识: PersistentVolumeClaim

    PersistentVolumeClaim(简称PVC)是用户存储的请求,PVC消耗PV的资源,可以请求特定的大小和访问模式,需要指定归属于某个Namespace,在同一个Namespace的Pod才可以指定对应的PVC。 当需要不同性质的PV来满足存储需求时,可以使用StorageClass来实现。 每个 PVC 中都包含一个 spec 规格字段和一个 status 声明状态字段。
  • 02.20 16:59:18
    发表了文章 2020-02-20 16:59:18

    Kubernetes必备知识:PersistentVolume

    PersistentVolume(PV)用于为用户和管理员提供如何提供和消费存储的API,PV由管理员在集群中提供的存储。它就像Node一样是集群中的一种资源。PersistentVolume 也是和存储卷一样的一种插件,但其有着自己独立的生命周期。PersistentVolumeClaim (PVC)是用户对存储的请求,类似于Pod消费Node资源,PVC消费PV资源。Pod能够请求特定的资源(CPU和内存),声明请求特定的存储大小和访问模式。PV是一个系统的资源,因此没有所属的命名空间。
  • 02.20 16:57:47
    发表了文章 2020-02-20 16:57:47

    Kubernetes必备知识: Network Policy

    网络策略(Network Policy )是 Kubernetes 的一种资源。Network Policy 通过 Label 选择 Pod,并指定其他 Pod 或外界如何与这些 Pod 通信。 Pod的网络流量包含流入(Ingress)和流出(Egress)两种方向。默认情况下,所有 Pod 是非隔离的,即任何来源的网络流量都能够访问 Pod,没有任何限制。当为 Pod 定义了 Network Policy,只有 Policy 允许的流量才能访问 Pod。
  • 02.20 16:45:58
    发表了文章 2020-02-20 16:45:58

    Pod 必备知识: LivenessProbes

    Liveness 指针是存活指针,它用来判断容器是否存活、判断 pod 是否 running。如果 Liveness 指针判断容器不健康,此时会通过 kubelet 杀掉相应的 pod,并根据重启策略来判断是否重启这个容器。如果默认不配置 Liveness 指针,则默认情况下认为它这个探测默认返回是成功的。
  • 02.20 16:43:29
    发表了文章 2020-02-20 16:43:29

    Kubernetes必备知识: Linux 容器-资源边界

    容器之所以被称为特殊的进程,是因为容器这个进程是有边界的。上一篇博客提到容器是一种沙盒技术,即能够向集装箱一样把应用装起来,这样应用与应用之间因为存在边界而不至于互相干扰,而被装进集装箱的应用也能被方便的搬运——这就是PaaS最理想的状态。容器技术的核心功能,就是通过约束和修改进程的动态表现,从而为其人为打造“边界”。在Linux中,Cgroup技术是用来制造约束的主要手段,而Namespace技术则是修改进程视图的主要方法,即让进程看到的资源信息与实际资源信息不同,俗称“障眼法”。
  • 02.20 16:42:18
    发表了文章 2020-02-20 16:42:18

    Kubernetes必备知识:Linux 容器-容器镜像

    用于创建容器镜像的工具称为容器镜像构建器。有时容器引擎执行此任务,也可以使用一些独立工具来构建容器镜像。
  • 02.20 16:40:06
    发表了文章 2020-02-20 16:40:06

    云原生必备知识: Linux 容器-隔离

    Linux 内核从版本 2.4.19 开始陆续引入了 namespace 的概念。其目的是将某个特定的全局系统资源(global system resource)通过抽象方法使得namespace 中的进程看起来拥有它们自己的隔离的全局系统资源实例(The purpose of each namespace is to wrap a particular global system resource in an abstraction that makes it appear to the processes within the namespace that they have their
  • 02.20 16:36:55
    发表了文章 2020-02-20 16:36:55

    Kubernetes必备知识: Labels

    标签其实就一对 key/value ,被关联到对象上,比如Pod,标签的使用我们倾向于能够标示对象的特殊特点,并且对用户而言是有意义的(就是一眼就看出了这个Pod是尼玛数据库),但是标签对内核系统是没有直接意义的。标签可以用来划分特定组的对象(比如,所有女的),标签可以在创建一个对象的时候直接给与设置,也可以在后期随时修改,每一个对象可以拥有多个标签,但是,key值必须是唯一的 "labels": { "key1" : "value1", "key2" : "value2" }
  • 02.20 16:35:25
    发表了文章 2020-02-20 16:35:25

    Kubernetes必备知识: Kubernetes资源模型requests

    Requests是容器请求要使用的资源,Kubernetes 会保证 Pod 能使用到这么多的资源。请求的资源是调度的依据,只有当节点上的可用资源大于 Pod 请求的各种资源时,调度器才会把 Pod 调度到该节点上(如果 CPU 资源足够,内存资源不足,调度器也不会选择该节点)。 需要注意的是,调度器只关心节点上可分配的资源,以及节点上所有 Pods 请求的资源,而不关心节点资源的实际使用情况,换句话说,如果节点上的 Pods 申请的资源已经把节点上的资源用满,即使它们的使用率非常低,比如说 CPU 和内存使用率都低于 10%,调度器也不会继续调度 Pod 上去。
  • 02.20 16:33:40
    发表了文章 2020-02-20 16:33:40

    Kubernetes必备知识: Kubernetes资源模型limits

    Limits 是 Pod 能使用的资源上限,是实际配置到内核 cgroups 里面的配置数据。对于内存来说,会直接转换成 docker run 命令行的--memory大小,最终会配置到 cgroups 对应任务的/sys/fs/cgroup/memory/……/memory.limit_in_bytes 文件中。
  • 02.20 16:31:53
    发表了文章 2020-02-20 16:31:53

    Kubernetes必备知识: Kubernetes网络模型

    我们知道的是,在K8S上的网络通信包含以下几类: • 容器间的通信:同一个Pod内的多个容器间的通信,它们之间通过lo网卡进行通信。 • Pod之间的通信:通过Pod IP地址进行通信。 • Pod和Service之间的通信:Pod IP地址和Service IP进行通信,两者并不属于同一网络,实现方式是通过IPVS或iptables规则转发。 • Service和集群外部客户端的通信,实现方式:Ingress、NodePort、Loadbalance
  • 02.20 16:27:15
    发表了文章 2020-02-20 16:27:15

    Kubernetes必备知识: Kubernetes的核心——控制器模式

    一个永不终止的控制循环,它持续管理着集群的状态,通过apiserver获取系统的状态,并且不断尝试以达到预期状态,比如副本控制器,namespace控制器,serviceaccounts控制器。
  • 02.20 16:26:04
    发表了文章 2020-02-20 16:26:04

    云原生必备知识: Kubernetes

    Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署
  • 02.20 16:24:01
    发表了文章 2020-02-20 16:24:01

    Kubernetes必备知识: Kubernetes Service

    Kubernetes中一个应用服务会有一个或多个实例(Pod),每个实例(Pod)的IP地址由网络插件动态随机分配(Pod重启后IP地址会改变)。为屏蔽这些后端实例的动态变化和对多实例的负载均衡,引入了Service这个资源对象
  • 02.20 16:20:22
    发表了文章 2020-02-20 16:20:22

    云原生必备知识: Netns

    netns是在linux中提供网络虚拟化的一个项目,使用netns网络空间虚拟化可以在本地虚拟化出多个网络环境,目前netns在lxc容器中被用来为容器提供网络。 使用netns创建的网络空间独立于当前系统的网络空间,其中的网络设备以及iptables规则等都是独立的,就好像进入了另外一个网络一样。
  • 02.20 16:19:11
    发表了文章 2020-02-20 16:19:11

    Kubernetes必备知识: kubernetes CSI

    csi 是一个标准的容器存储接口,规定了如何实现一个容器的存储接口,CSI 本身的定义是基于 gRPC 的,所以有一套样例库可以使用,这里分析一下 kuberntes 实现 csi 的方式,为了兼容 CSI kubernete 其实搞得挺绕的,目前这个 CSI 还是定制中包括后期的 Snapshot 的接口怎么设计等等还在讨论中。kubernetes CSI 主要基于几个外部组件和内部功能的一些改动。
  • 02.20 16:16:44
    发表了文章 2020-02-20 16:16:44

    Kubernetes必备知识: Kubernetes API编程利器 Operator

    operator是描述、部署和管理kubernetes应用的一套机制,从实现上来说,operator=CRD+webhook+controller
  • 02.20 16:14:21
    发表了文章 2020-02-20 16:14:21

    Kubernetes必备知识: Kubernetes Flexvolume

    FlexVolume 是 Kubernetes v1.8+ 支持的一种存储插件扩展方式。类似于 CNI 插件,它需要外部插件将二进制文件放到预先配置的路径中(如 /usr/libexec/kubernetes/kubelet-plugins/volume/exec/),并需要在系统中安装好所有需要的依赖。可以想到,这是一种out-tree的扩展方式,不需要新增加一种存储插件,去更改k8s的源码。
  • 02.20 16:12:01
    发表了文章 2020-02-20 16:12:01

    Kubernetes必备知识: Kubernetes RBAC

    基于角色的访问控制(Role-Based Access Control, 即”RBAC”)使用”rbac.authorization.k8s.io” API Group实现授权决策,允许管理员通过Kubernetes API动态配置策略。
  • 02.20 16:08:10
    发表了文章 2020-02-20 16:08:10

    Kubernetes必备知识: Job

    首先 kubernetes 的 Job 是一个管理任务的控制器,它可以创建一个或多个 Pod 来指定 Pod 的数量,并可以监控它是否成功地运行或终止; 我们可以根据 Pod 的状态来给 Job 设置重置的方式及重试的次数; 我们还可以根据依赖关系,保证上一个任务运行完成之后再运行下一个任务; 同时还可以控制任务的并行度,根据并行度来确保 Pod 运行过程中的并行次数和总体完成大小。
  • 02.20 16:05:54
    发表了文章 2020-02-20 16:05:54

    Kubernetes必备知识: GPU管理机制

    GPU全称是Graphics Processing Unit,图形处理单元。它的功能最初与名字一致,是专门用于绘制图像和处理图元数据的特定芯片,后来渐渐加入了其它很多功能。
  • 02.20 16:04:37
    发表了文章 2020-02-20 16:04:37

    云原生必备知识: etcd性能

    决定etcd性能的关键因素,包括:  延迟( agency):延迟是完成操作的时间。  吞吐量 (throughput):吞吐量是在某个时间期间之内完成操作的总数量。当etcd接收并发客户端请求时,通常平均延迟随着总体吞吐量增加而增加。
  • 02.20 16:03:03
    发表了文章 2020-02-20 16:03:03

    云原生必备知识: etcd

    etcd is a distributed, consistent key-value store for shared configuration and service discovery, with a focus on being: Secure: automatic TLS with optional client cert authentication[可选的SSL客户端证书认证:支持https访问 ] Fast: benchmarked 10,000 writes/sec[单实例每秒 1000 次写操作] Reliable: properly distributed usi
  • 02.20 16:00:40
    发表了文章 2020-02-20 16:00:40

    DNS配置必备知识: DNS配置

    DNS,英文全程"Domain Name System,中文全程:域名系统,作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS基于C/S架构(多数基于套接字架构的都是C/S架构),同时使用TCP和UDP的53号端口,当前,对于每一级域名长度限制是63个字符,域名总长度则不能超过253个字符。  我们都知道,IP地址是由32位的二进制数字组成。用户与因特网上某台主机通行时,显然不愿意使用难以记忆的32位的二进制主机地址。相反,大家更愿意使用比较容易记住的主机名称。这时DNS的出现就将繁琐复杂32位二进制数字解析大家易于接受的字符串形式。
  • 02.20 15:58:05
    发表了文章 2020-02-20 15:58:05

    DNS必备知识: DNS部署

    DNS(域名系统)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。
  • 02.20 15:56:08
    发表了文章 2020-02-20 15:56:08

    Kubernetes必备知识: Device Plugin的工作机制

    通过提供通用设备插件机制和标准的设备API接口。这样设备厂商只需要实现相应的API接口,无需修改Kubelet主干代码,就可以实现支持GPU、FPGA、高性能 NIC、InfiniBand 等各种设备的扩展。该能力在Kubernetes 1.8和1.9版本处于Alpha版本,在1.10会进入Beta版本。
  • 02.20 15:54:52
    发表了文章 2020-02-20 15:54:52

    Kubernetes必备知识: deployment

    Deployment为pod和replica set(下一代replication controller)提供声明式更新。只需要在deployment中描述想要的目标状态,deployment controller就会帮您将pod和replicasSet的实际状态改变到您的目标状态。也可以定义一个全新的deployment来创建replicasSet或者删除已有的deployment并创建一个新的来替换。
  • 02.20 15:53:42
    发表了文章 2020-02-20 15:53:42

    Kubernetes必备知识: DaemonSet

    DaemonSet:守护进程控制器 DaemonSet 也是 Kubernetes 提供的一个 default controller,它实际是做一个守护进程的控制器,它能帮我们做到以下几件事情: 首先能保证集群内的每一个节点都运行一组相同的 pod; 同时还能根据节点的状态保证新加入的节点自动创建对应的 pod; 在移除节点的时候,能删除对应的 pod; 而且它会跟踪每个 pod 的状态,当这个 pod 出现异常、Crash 掉了,会及时地去 recovery 这个状态。
  • 02.20 15:52:09
    发表了文章 2020-02-20 15:52:09

    Kubernetes必备知识: CronJob

    CronJobs提供了在特定的时间或者间隔内处理业务逻辑的方法。一般创建一个Cronjob有两种方式,第一种是定义Java类,由Hybris生成脚本并加入数据库。第二种是直接编写groovy脚本语言并插入数据库,这种应该适合逻辑比较少的时候,比如只有一两句逻辑的时候,一般用得比较少。
  • 02.20 15:50:48
    发表了文章 2020-02-20 15:50:48

    Pod必备知识: ConfigMaps

    主要管理容器运行所需的配置文件,环境变量,命令行参数等可变配置。用于解耦容器镜像和可变配置,从而保障工作负载(Pod)的可移植性。
  • 02.20 15:49:16
    发表了文章 2020-02-20 15:49:16

    Kubernetes必备知识: CNI插件

    CNI插件负责将网络接口插入容器网络命名空间(例如,veth对的一端),并在主机上进行任何必要的改变(例如将veth的另一端连接到网桥)。然后将IP分配给接口,并通过调用适当的IPAM插件来设置与“IP地址管理”部分一致的路由。
  • 02.20 15:47:43
    发表了文章 2020-02-20 15:47:43

    云原生必备知识:Ambassador

    Ambassador是一个基于envoy proxy构建的,kubernetes原生的开源微服务网关。Ambassador在构建之初就致力于支持多个独立的团队,这些团队需要为最终用户快速发布、监控和更新服务。Ambassador还可以用来处理Kubernetes ingress和负载均衡的能力。
  • 02.20 15:47:33
    发表了文章 2020-02-20 15:47:33

    Kubernetes必备知识: Kubernetes API编程利器 Operator Framework

    Operator Framework给用户提供了webhook和controller框架,包括消息通知、失败重新入队等等,开发人员仅需关心被管理应用的运维逻辑实现 主流的Operator Framework项目 -kubebuilder:https:github.com/kubernetes-sigs/kubebuilder -operator-sdk:https:github.com/operator-framework/operator-sdk -两者没有本质上的区别,都是使用的controller-tools和controller-runtime。细节上kubebuilder相应的测试、
  • 02.20 15:45:50
    发表了文章 2020-02-20 15:45:50

    Kubernetes必备知识: Annotations

    Annotations(注解) 是 key/value 形式附加于对象的注解。不同于 Labels 用于标志和选择对象,Annotations 则是用来记录一些附加信息,用来辅助应用部署、安全策略以及调度策略等。比如 deployment 使用 annotations 来记录 rolling update 的状态。
  • 02.20 15:45:38
    发表了文章 2020-02-20 15:45:38

    Kubernetes必备知识: CNI

    CNI的全称是 Container Network Interface,即容器网络的 API 接口。 它是 K8s 中标准的一个调用网络实现的接口。Kubelet 通过这个标准的 API 来调用不同的网络插件以实现不同的网络配置方式。实现了这个接口的就是 CNI 插件,它实现了一系列的 CNI API 接口。常见的 CNI 插件包括 Calico、flannel、Terway、Weave Net 以及 Contiv。
  • 02.20 15:40:07
    发表了文章 2020-02-20 15:40:07

    微服务必备知识: 微服务

    在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是微、什么是服务,微,狭义来讲就是体积小、著名的;2 pizza 团队很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来 只需要2个披萨就够了 )。 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。
  • 02.20 15:36:39
    发表了文章 2020-02-20 15:36:39

    微服务必备知识:Service Mesh

    Service Mesh 会完成完整的服务间调用流程,如服务发现负载均衡,最后将请求发送给目标服务。这表现为 Sidecar。 Sidecar 这个词中文翻译为边车,或者车斗,也有一个乡土气息浓重的翻译叫做边三轮。Sidecar 这个东西出现的时间挺长的,它在原有的客户端和服务端之间加多了一个代理。 多个服务调用的情况,在这个图上我们可以看到 Service Mesh 在所有的服务的下面,这一层被称之为 服务间通讯专用基础设施层。Service Mesh 会接管整个网络,把所有的请求在服务之间做转发。在这种情况下,我们会看到上面的服务不再负责传递请求的具体逻辑,只负责完成业务处理。服务间通讯的
  • 02.20 15:34:20
    发表了文章 2020-02-20 15:34:20

    微服务必备知识:Spring Cloud Alibaba Sentinel

    Sentinel 是阿里巴巴开源,面向分布式付五架构的轻量级流量控制组件。在微服务中,服务的调用一般分为Consumer和Provoder,在使用过程中,我们需要对Provoder进性限流保护,来保证不会被过快的调用或者流量激增所打垮,我们可以配置QPS模式的限流,来让多余的流量直接拒绝,同时我们也可以对Provider进性授权保护(不受信任的应用直接拒绝),系统保护(Load超出阈值停止服务),热点保护(增强板的限流保护)
  • 发表了文章 2020-02-20

    Kubernetes必备知识: 主流网络方案

  • 发表了文章 2020-02-20

    云原生必备知识: 云原生

  • 发表了文章 2020-02-20

    云原生必备知识: 应用储存

  • 发表了文章 2020-02-20

    云原生必备知识:调度算法(Scheduler)

  • 发表了文章 2020-02-20

    Kubernetes必备知识: 调度流程

  • 发表了文章 2020-02-20

    云原生必备知识: 容器数据卷

  • 发表了文章 2020-02-20

    云原生必备知识: 容器设计模式

  • 发表了文章 2020-02-20

    云原生必备知识: 容器镜像

  • 发表了文章 2020-02-20

    Kubernetes必备知识: 容器接口CRI

  • 发表了文章 2020-02-20

    云原生必备知识:容器

  • 发表了文章 2020-02-20

    Kubernetes必备知识: 配置调度器

  • 发表了文章 2020-02-20

    Kubernetes必备知识: 扩展调度器

  • 发表了文章 2020-02-20

    云原生必备知识: 负载均衡

  • 发表了文章 2020-02-20

    云原生必备知识: 持久化数据卷

  • 发表了文章 2020-02-20

    Kubernetes必备知识: StorageClass

  • 发表了文章 2020-02-20

    Kubernetes必备知识: StatefulSet

  • 发表了文章 2020-02-20

    云原生必备知识: Sidecar

  • 发表了文章 2020-02-20

    Pod必备知识: ServiceAccounts

  • 发表了文章 2020-02-20

    Kubernetes必备知识: Selectors

  • 发表了文章 2020-02-20

    Pod必备知识: SecurityContexts

正在加载, 请稍后...
滑动查看更多
  • 回答了问题 2020-05-18

    MySQL递归??mysql

    可以,但是您需要更改数据库结构;进行更改后,您可以在一个查询中检索任意深度的树。查询稍微复杂一些,但是仍然非常简单。来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    如何在MySQL查询中编写IF ELSE语句?mysql

    这段代码像筛子一样漏水。 您正在调用mysql_query一个mysql_real_escape_string()看不见的功能。 您正在其他功能中使用PDO。 这是一团糟,没有道理。如果您知道如何使用PDO,请使用它。 这样您就安全了。 如果要使用mysql_query,则必须使用mysql_real_escape_string()。来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    在MySQL 4.0中同时具有Created和Last Updated timestam?mysql

    尝试还原到旧版本的连接器。适用于我的是6.3.4。另外,请确保在服务器上使用与开发工作站上完全相同的版本。来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    查找表中的列数?mysql

    一种方法是将您的表2转换为长格式,其中一列用于GeneGroupName成员基因,一列用于成员基因,然后使用match。 (table1 GeneName col2 1 F 0.6116285 2 L 0.5752088 3 J 0.7499011 4 D 0.9405068 5 A 0.9360968 6 K 0.6549850 7 I 0.7070163 8 E 0.3521952 9 C 0.4234293 10 G 0.7750203 11 B 0.1418680 12 H 0.6632382 (table2 GeneGroupName g1 g2 g3 1 1 A E I 2 2 B F J 3 3 C G K 4 4 D H L (table2.long GeneGroupName gene g1 id 1.1 1 1 A 1 2.1 2 1 B 2 3.1 3 1 C 3 4.1 4 1 D 4 1.2 1 2 E 1 2.2 2 2 F 2 3.2 3 2 G 3 4.2 4 2 H 4 1.3 1 3 I 1 2.3 2 3 J 2 3.3 3 3 K 3 4.3 4 3 L 4 table1$grp table1 GeneName col2 GeneGroupName 1 F 0.6116285 2 2 L 0.5752088 4 3 J 0.7499011 2 4 D 0.9405068 4 5 A 0.9360968 1 6 K 0.6549850 3 7 I 0.7070163 1 8 E 0.3521952 1 9 C 0.4234293 3 10 G 0.7750203 3 11 B 0.1418680 2 12 H 0.6632382 4来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    如何在Windows上访问Xampp的命令行?mysql

    显然,您在操作系统级别而不是在应用程序级别设置了克朗。尽管,就像在Unix / Linux上一样,您也可以使用Task Schedular在Windows平台上设置CRON ( All Programs->Accessories->System Tools -> Task Schedular )。我认为您应该为VPN或专用服务器设置权杖,因为它需要私下访问系统资源。 除此之外,Crontab command(unix / linux)的语法如下: 1 2 3 4 5 /root/backup.sh 1: Minute (0-59) 2: Hours (0-23) 3: Day (0-31) 4: Month (0-12 [12 == December]) 5: Day of the week(0-7 [7 or 0 == sunday]) /path/to/command - Script or command name to schedule来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    Ruby on Rails 3无法通过OSX上的套接字'/tmp/mysql.sock'?mysql

    该where子句永远不会返回nil,它返回一个ActiveRecord :: Relation对象,该对象可以为空! 尝试以下方法: def create if @trained = Certificate.where(user_id: params[:certificate][:user_id]).first @trained.update_attributes(attend: 'No') else @trained = Certificate.new(params[:certificate]) if @trained.save @trained.update_attributes(attend: 'Yes') end end redirect_to grandstreamers_resellers_path end 但我会将代码重构为如下形式: def create @trained = Certificate.where(user_id: params[:certificate][:user_id]).first @trained ||= Certificate.new(params[:certificate]) if @trained.persisted? # tests if the records is persisted in the DB (has an ID) @trained.attend = 'No' else @trained.attend = 'Yes' end @trained.save redirect_to grandstreamers_resellers_path end 非常简短的版本: def create @trained = Certificate.where(user_id: params[:certificate][:user_id]).first || Certificate.new(params[:certificate]) @trained.attend = @trained.persisted? ? 'No' : 'Yes' @trained.save redirect_to grandstreamers_resellers_path end 为了记录(@NitinJ,请看一下),您可以在if条件中分配变量: if first_user = User.first if User.first does not returns nil, executes the first block with local variable first_user available first_user.id else # User.first returned nil end来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    MySQL在日期中添加天数?mysql

    假设您的字段是一种date类型(或相似类型): SELECT DATE_ADD(your_field_name, INTERVAL 2 DAY) FROM table_name; 使用您提供的示例,它看起来可能像这样: UPDATE classes SET date = DATE_ADD(date , INTERVAL 2 DAY) WHERE id = 161; 这种方法也适用datetime。来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    MySQL查询,MAX()+ GROUP BY?mysql

    (在PostgreSQL 9中测试过) 标识摆脱和时间戳。 select rid, max(timestamp) as ts from test group by rid; 1 2011-04-14 18:46:00 2 2011-04-14 14:59:00 加入吧。 select test.pid, test.cost, test.timestamp, test.rid from test inner join (select rid, max(timestamp) as ts from test group by rid) maxt on (test.rid = maxt.rid and test.timestamp = maxt.ts)来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    错误代码:1406。列的数据太长-MySQL?mysql

    问题出在函数名称上。函数名称应具有字段名称。就像你的例子一样 $attribute_name = 'image_wheel'; 所以函数名称应该是 public function setImage_wheelAttribute($value) 这样可以解决问题来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    Python导入MySQLdb错误-Mac 10.6?mysql

    检查您的apache错误日志中是否有错误。另外,尝试使用_www并手动执行脚本。来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    MySQL触发器将字段更新为id的值?mysql

    '我不知道任何方法可以在一个语句中执行此操作,即使使用触发器也是如此。 @Lucky建议的触发器解决方案在MySQL中如下所示: CREATE TRIGGER MyTrigger BEFORE INSERT ON MyTable FOR EACH ROW BEGIN SET NEW.group_id = COALESCE(NEW.group_id, NEW.id); END 但是,有一个问题。在此BEFORE INSERT阶段,id尚未生成自动生成的值。因此,如果group_id为null,则默认NEW.id为始终为0。 但是,如果您在此AFTER INSERT阶段将触发器更改为触发,那么您就可以访问的生成值NEW.id,则无法修改列值。 MySQL不支持DEFAULT列的表达式,因此您也不能在表定义中声明此行为。*更新:MySQL 8.0.13支持,DEFAULT ( )但表达式仍然不能依赖于自动增量值(已记录)。 唯一的解决方案是执行INSERT,然后立即执行UPDATE来更改group_id未设置的。 INSERT INTO MyTable (group_id, value) VALUES (NULL, 'a'); UPDATE MyTable SET group_id = COALESCE(group_id, id) WHERE id = LAST_INSERT_ID();' 来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    MySQL Workbench:如何使连接保持活动状态?mysql

    '转到“编辑”->“首选项”->“ SQL编辑器”,然后将此参数设置为更高的值:DBMS连接读取超时(以秒为单位)。例如:86400。 关闭并重新打开MySQL Workbench。杀死先前可能正在运行的查询,然后再次运行该查询。' 来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    MySQL select语句是CASE还是IF ELSEIF?不确定如何获得结果?mysql

    '试试这个查询- SELECT t2.company_name, t2.expose_new, t2.expose_used, t1.title, t1.seller, t1.status, CASE status WHEN 'New' THEN t2.expose_new WHEN 'Used' THEN t2.expose_used ELSE NULL END as 'expose' FROM products t1 JOIN manufacturers t2 ON t2.id = t1.seller WHERE t1.seller = 4238' 来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    MySQL PHP不兼容?mysql

    '您正在使用的MySQL帐户可能具有旧的16个字符长的密码(哈希)。 您可以使用MySQL客户端(例如HeidiSQL,MySQL控制台客户端或任何其他客户端)和有权访问的帐户进行测试mysql。user表。如果密码字段包含16个字符,则它是一个旧密码,并且mysqlnd无法使用它来连接到MySQL服务器。 您可以使用以下方式为该用户设置新密码 SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword') 参见dev_mysql_set_password 编辑: 您还应该检查服务器是否默认设置为使用/创建旧密码。 edit2: 请运行查询 SELECT Length(Password), Substring(Password, 1, 1) FROM mysql.user WHERE user='username' 在5.0.22服务器上(“失败”的服务器)。替换username为您在mysql_connect()中使用的帐户。 那会返回什么?' 来源:stack overflow
    踩0 评论0
  • 回答了问题 2020-05-18

    最佳实践多语言网站?mysql

    '主题前提 多语言站点包含三个不同方面: 界面翻译 内容 网址路由 尽管它们都以不同的方式互连,但是从CMS的角度来看,它们是使用不同的UI元素进行管理的,并且存储方式也不同。您似乎对自己的实现和对前两个的理解充满信心。问题是关于后一个方面的问题:“ URL转换?我们应该这样做吗?应该以什么方式进行?” URL可以由什么组成? 一个非常重要的事情是,不要对IDN感兴趣。取而代之的是支持音译(也:转录和罗马化)。乍一看,IDN似乎是国际URL的可行选择,但实际上,它不能按广告宣传工作,原因有两个: 某些浏览器会将非ASCII字符(例如'ч'或)'ž'转换为'%D1%87'和'%C5%BE' 如果用户具有自定义主题,则主题的字体很可能没有这些字母的符号 实际上,几年前,我在一个基于Yii的项目(可怕的框架,恕我直言)中尝试了IDN方法。在抓取该解决方案之前,我遇到了上述两个问题。另外,我怀疑这可能是攻击媒介。 可用选项...如我所见。 基本上,您有两个选择,可以抽象为: http://site.tld/[:query]:[:query]决定语言和内容选择的地方 http://site.tld/[:language]/[:query]:[:language]URL的一部分定义语言的选择,[:query]仅用于标识内容 查询是Α和Ω.. 假设您选择http://site.tld/[:query]。 在这种情况下,您有一种主要的语言来源:[:query]段的内容;以及另外两个来源: $_COOKIE['lang']该特定浏览器的价值 HTTP Accept-Language (1),(2)标头中的语言列表 首先,您需要将查询与定义的路由模式之一进行匹配(如果您选择的是Laravel,请在此处阅读)。成功匹配模式后,您需要查找语言。 您将必须遍历模式的所有部分。找到所有这些片段的潜在翻译,并确定使用哪种语言。当(不是“如果”)发生冲突时,将使用两个其他来源(cookie和标头)来解决路由冲突。 例如:http://site.tld/blog/novinka。 那是音译''блог, новинка'',在英语中大约是''blog'', ''latest''。 您已经注意到,俄语中的“блог”将译为“博客”。这意味着对于您的第一部分[:query](在最佳情况下),最终会['en', 'ru']列出可能的语言。然后您进入下一个片段-“ novinka”。可能的列表中可能只有一种语言:['ru']。 当列表中有一项时,您已经成功找到该语言。 但是,如果最终得到2种(例如:俄语和乌克兰语)或更多种可能性..或0种可能性(视情况而定)。您将必须使用Cookie和/或标题才能找到正确的选项。 如果其他所有方法均失败,则选择站点的默认语言。 语言作为参数 替代方法是使用URL,可以将其定义为http://site.tld/[:language]/[:query]。在这种情况下,翻译查询时,您无需猜测语言,因为此时您已经知道要使用哪种语言。 还有另一种语言来源:cookie值。但是,这里没有必要弄乱Accept-Language标头,因为在“冷启动”的情况下(当用户第一次使用自定义查询打开网站时),您不会处理未知数量的可能的语言。 相反,您有3个简单的优先选项: 如果[:language]设置了细分,请使用它 如果$_COOKIE['lang']设置,使用它 使用默认语言 使用该语言时,您只需尝试翻译查询,如果翻译失败,请对该特定段使用“默认值”(基于路由结果)。 这不是第三种选择吗? 是的,从技术上讲,您可以将两种方法结合使用,但这会使过程复杂化,并且只适合那些想要手动更改URL http://site.tld/en/news到http://site.tld/de/news并希望新闻页面更改为德语的人员。 但是即使是这种情况,也可以使用cookie值(其中包含有关先前选择语言的信息)缓解,以减少魔术和希望。 使用哪种方法? 您可能已经猜到了,我建议您将其http://site.tld/[:language]/[:query]作为更明智的选择。 同样在真实的单词情况下,URL中将包含第三大部分:“标题”。如在线商店中的产品名称或新闻站点中的文章标题。 例: http://site.tld/en/news/article/121415/EU-as-global-reserve-currency 在这种情况下'/news/article/121415'将是查询,而'EU-as-global-reserve-currency'标题是。纯粹用于SEO。 可以在Laravel中完成吗? Kinda,但默认情况下不是。 我不太熟悉它,但是据我所知,Laravel使用简单的基于模式的路由机制。要实现多语言URL,您可能必须扩展核心类,因为多语言路由需要访问不同形式的存储(数据库,缓存和/或配置文件)。 已路由。现在怎么办? 结果,您最终将获得两条有价值的信息:当前语言和查询的翻译段。然后,这些值可用于调度将产生结果的类。 基本上,以下网址:(http://site.tld/ru/blog/novinka或不含的版本'/ru')变成了类似 $parameters = [ 'language' => 'ru', 'classname' => 'blog', 'method' => 'latest', ]; 您仅用于调度的对象: $instance = new {$parameter['classname']}; $instance->{'get'.$parameters['method']}( $parameters ); ..或它的某些变体,具体取决于特定的实现。'来源:stack overflow
    踩0 评论0
  • 提交了问题 2020-05-17

    致命错误:在null上调用成员函数query()?mysql

  • 提交了问题 2020-05-17

    从MYSQL更新到MYSQLI ?mysql

  • 提交了问题 2020-05-17

    使用PDO准备好的语句插入多行?mysql

  • 提交了问题 2020-05-17

    JDBC MySQL UTF-8字符串编写问题?mysql

  • 提交了问题 2020-05-17

    在django ORM中查询时,如何将char转换为整数??mysql

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息