首页 文章 精选 留言 我的

精选列表

搜索[语言切换],共10000篇文章
优秀的个人博客,低调大师

二, 跨语言微服务框架 - Istio环境搭建

当我们知道Istio是一个好东西,能够帮助我们快速实现微服务化中的一些关键节点,那么下一步就需要考虑怎么使用Istio了,Istio现在版本是和Kubernetes强关联在一起的,如果大家还不是太了解Kubernetes可以先从笔者的文章中了解,通过Kubernetes生态Istio可以非常方便的进行部署和使用。 附上: 喵了个咪的博客:w-blog.cn Istio官方地址:https://preliminary.istio.io/zh Istio中文文档:https://preliminary.istio.io/zh/docs/ PS : 此处基于当前最新istio版本1.0.3版本进行搭建和演示 一. Kubernetes准备工作 搭建部署Istio时需要先准备好Kubernetes环境,笔者这边使用的是Rancher进行环境的搭建,可以参考笔者的以下博文: Docker应用容器引擎介绍与搭建 - 喵了个咪博客空间 - 开源中国 Kubernetes(二) - 使用Rancher部署K8S集群(搭建Rancher) - 喵了个咪博客空间 - 开源中国 Kubernetes(三) - 使用Rancher部署K8S集群(搭建Kubernetes) - 喵了个咪博客空间 - 开源中国 Docker应用容器引擎介绍与搭建 - 喵了个咪的博客 - CSDN博客 Kubernetes(二) - 使用Rancher部署K8S集群(搭建Rancher) - 喵了个咪的博客 - CSDN博客 Kubernetes(三) - 使用Rancher部署K8S集群(搭建Kubernetes) - 喵了个咪的博客 - CSDN博客 这里需要着重提醒的是关于在部署的时候需要修改Kubernetes模板配置项,之后配置之后后面的Sidecar自动注入才能使用,否则只能手动入住Sidecar. 需要找到Kubernetes Admission controllers选项,如下 NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,DefaultTolerationSeconds,ResourceQuota 在指定位置添加两个选项 MutatingAdmissionWebhook,ValidatingAdmissionWebhook 如下 NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota 这样才启动了admissionregistration API 最后在创建集群的时候选择我们事先准备好的环境模板即可. 然后按照笔者之前的文章部署k8s即可: PS : 这里使用的K8S版本为1.11,推荐使用1.10以上的版本 二. 部署Istio PS : 1.0.3版本官方已经完全把docker仓库使用了docker.io舍弃了grc.io就不需要我们去翻墙或者复制镜像了(不在推荐使用1.0.3以前的版本) 首先去官方git下载对应的版本包(liunx 和 mac 要分开) Releases · istio/istio · GitHub > tar -zxvf istio-1.0.3-linux.tar.gz 2.1 安装istioctl 如果手动注入sidecar的话需要使用这个命令,自动注入的话不装这个也行: > sudo cp istio-1.0.3/bin/istioctl /usr/local/bin/ 2.2 安装Istio核心组件 简单的安装只需要通过运行官方提前准备好的yaml即可,如果有定制需求(有些内部组件不需要可以使用helm进行yaml构建) > kubectl apply -f istio-1.0.3/install/kubernetes/istio-demo.yaml > kubectl get svc -n istio-system > kubectl get pods -n istio-system PS : 这边会有三个0/1的是正常的,主要是三个task只有到达指定时间才会运行或一次性脚本 三. 结尾 此时istio就已经搭建完成,通过这种方式搭建的istio是一整套没有删减的容器组,包括grafaba + prometheus等(存在磁盘和处理资源的问题),如果有需求独立在外层部署这些组件的需求就需要修安装yaml进行了解学习修改,本套文章后续也会讲解怎么把一些非核心组件在外层部署(每个版本都会有一些区别需要小心)。 PS : 大家也许遇到了无法访问外网的问题可以关注笔者后续的Egress流量控制或参考 Istio Prelim 1.1 / 控制 Egress 流量

优秀的个人博客,低调大师

ants —— Go 语言的高性能协程池

ants详细介绍 github主页:https://github.com/panjf2000/ants ants是一个高性能的协程池,实现了对大规模goroutine的调度管理、goroutine复用,允许使用者在开发并发程序的时候限制协程数量,复用资源,达到更高效执行任务的效果。 功能 1. 实现了自动调度并发的goroutine,复用goroutine 2. 提供了友好的接口:任务提交、获取运行中的协程数量、动态调整协程池大小 3. 资源复用,极大节省内存使用量;在大规模批量并发任务场景下比原生goroutine并发具有更高的性能 使用 写 go 并发程序的时候如果程序会启动大量的 goroutine ,势必会消耗大量的系统资源(内存,CPU),通过使用ants,可以实例化一个协程池,复用 goroutine ,节省资源,提升性能: package main import ( "fmt" "sync" "sync/atomic" "github.com/panjf2000/ants" "time" ) var sum int32 func myFunc(i interface{}) error { n := i.(int) atomic.AddInt32(&sum, int32(n)) fmt.Printf("run with %d\n", n) return nil } func demoFunc() error { time.Sleep(10 * time.Millisecond) fmt.Println("Hello World!") return nil } func main() { runTimes := 1000 // use the common pool var wg sync.WaitGroup for i := 0; i < runTimes; i++ { wg.Add(1) ants.Submit(func() error { demoFunc() wg.Done() return nil }) } wg.Wait() fmt.Printf("running goroutines: %d\n", ants.Running()) fmt.Printf("finish all tasks.\n") // use the pool with a function // set 10 the size of goroutine pool p, _ := ants.NewPoolWithFunc(10, func(i interface{}) error { myFunc(i) wg.Done() return nil }) // submit tasks for i := 0; i < runTimes; i++ { wg.Add(1) p.Serve(i) } wg.Wait() fmt.Printf("running goroutines: %d\n", p.Running()) fmt.Printf("finish all tasks, result is %d\n", sum) } 本文来自云栖社区合作伙伴“开源中国” 本文作者:达尔文 原文链接

优秀的个人博客,低调大师

【C语言】学习笔记10——其他数据结构

1. 联合:能在同一内存空间中存储不同的数据类型(不是同时存储)。典型用法是,设计一种表以存储既无规律、事先也不知道顺序的混合类型。 下面是一个代表及的联合模板 union hold { int digit; double bigfl; char letter; } 根据以上形式声明的类型可以存储一个int类型或一个double类型或一个char类型的值。 2. 枚举类型:可以使用枚举类型声明符号名称来表示整型常量。 使用 enum 关键字, 可以创建一个新“类型”并指定它可具有的值。 enum spectrum {red, orange. yellow, green. blue, violet}; enum spectrum color; 枚举符是int类型,但是枚举变量可以是任意整数类型,前提是该整数类型足够长,可以存储所有的枚举常量。比如 spectrum 的枚举符范围是0~5, 所以编译器可以用 unsigned char 来表示color变量 C允许枚举变量使用 ++ 运算符,但是C++标准不允许 3. 在枚举声明中,可以为枚举常量指定整数值 enum levels {low = 100, medium = 500, high = 2000} 如果只给一个枚举常量赋值,后面的常量没有被赋值 enum feline(cat, lynx = 10, puma, tiger) // cat = 0, lynx = 10, puma = 11, tiger = 12 4. typedef: 类似别名,或者说更接近于包装

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册