go

Go语言(二十)日志采集项目(二)Etcd的使用

坚强是说给别人听的谎言 提交于 2020-10-05 17:01:44
日志采集项目(二)Etcd的使用 ETCD 介绍 概念: 高可用的分布式key-value存储,实现配置共享和服务发现 类似项目: zookeeper和consul 开发语言: Go 接口: 提供restful的http接口,使用简单 实现算法: 基于raft算法的强一致性,高可用的服务存储目录 ETCD的应用场景 服务发现和注册 配置中心 分布式锁 master选举 ETCD环境搭建 下载地址: https://github.com/etcd-io/etcd/releases/download/v3.4.7/etcd-v3.4.7-linux-amd64.tar.gz 启动方式: bin/etcd 可以直接启动 [root@centos7-node1 etcd]# nohup ./etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 --initial-advertise-peer-urls http://0.0.0.0:2380 & #启动etcd etcdctl使用 [root@centos7-node1 ~]# cd /opt/application/etcd/ [root

抢占云原生市场,阿里开源服务发现组件 Nacos快速入门

落花浮王杯 提交于 2020-10-05 13:55:06
最近几年随着云计算和微服务不断的发展,各大云厂商也都看好了微服务解决方案这个市场,纷纷推出了自己针对微服务上云架构的解决方案,并且诞生了云原生,Cloud Native的概念。 云原生是一种专门针对云上应用而设计的方法,用于构建和部署应用,以充分发挥云计算的优势。 云原生应用的特点是可以实现快速和频繁的构建、发布、部署,可以方便的满足在扩展性,可用性,可移植性等方面的要求,并提供更好的经济性。 针对云原生,云厂商也纷纷提出了自己的解决方案,阿里巴巴开源的Nacos就是其中之一,Nacos同时集成到了Spring Cloud Alibaba中,作为一个整体的解决方案。 Nacos解决两个核心问题:动态配置管理,服务注册发现。 一、Nacos支持功能 Nacos支持以下的功能,包括服务发现,配置管理,元数据管理,地址服务器,支持云原生,支持Docker和K8s等。 服务发现 服务注册与发现 健康检查:支持服务端探测、客户端心跳 路由策略:支持权重、保护阈值、就近访问 配置管理 配置管理:支持发布、修改、查询、监听配置 灰度配置:支持灰度发布 元数据管理 对接第三方CMDB 地址服务器 支持Nacos寻址 云原生支持 对接Istio 对接ConfigMap 多客户端支持 支持多种客户端,包括Java客户端、Go客户端、Node.js客户端、C#客户端 支持Docker和K8s

Dubbo 3.0

感情迁移 提交于 2020-10-05 13:50:20
作者 | 郭浩(项升) 阿里巴巴经济体 RPC 框架负责人 **导读:**本文整理自作者于 2020 年云原生微服务大会上的分享《Dubbo3.0 - 开启下一代云原生微服务》,主要介绍了关于思考 rpc 框架层面,功能演进的方向是什么?以及怎么更好地支持云上的多语言开发的新思考。 关注阿里巴巴云原生公众号,后台回复 【818】 即可获取直播回看地址和大会 PPT 合集。 看到这个题目,大家可能会有几个问题,比如,什么是云原生微服务?Dubbo3.0 是什么?和目前的 Dubbo2.0 有什么区别?用了 Dubbo3.0 会带来哪些业务视角的好处?后面的分享会对这些问题逐一解答。 这次分享分为以下几个环节: Dubbo 的演进历史 Dubbo 的开源现状 定义 Dubbo3.0 分享 Dubbo 3.0 目前取得的一些成果 考虑到有些同学对 Dubbo 可能不太熟悉,在介绍背景之前,我先简单介绍一下 Dubbo 是什么。简单地说,Dubbo 是基于 Java 的 RPC 框架。一个 RPC 框架至少由数据格式、传输协议和连接管理组成,这三点也是构成核心。Dubbo 能够被广泛应用主要有两个原因: 一方面是较好的插件机制支撑了多种扩展,这些扩展在不同业务场景和基础架构中能分别发挥最大优势; 另一方面不同于普通的 RPC 框架,Dubbo 的服务治理功能让其在易用性方面脱颖而出

使用 gosec 检查 Go 代码中的安全问题

那年仲夏 提交于 2020-10-05 09:08:56
来学习下 Go 语言的安全检查工具 gosec。 Go 语言 写的代码越来越常见,尤其是在容器、Kubernetes 或云生态相关的开发中。Docker 是最早采用 Golang 的项目之一,随后是 Kubernetes,之后大量的新项目在众多编程语言中选择了 Go。 像其他语言一样,Go 也有它的长处和短处(如安全缺陷)。这些缺陷可能会因为语言本身的缺陷加上程序员编码不当而产生,例如,C 代码中的内存安全问题。 无论它们出现的原因是什么,安全问题都应该在开发过程的早期修复,以免在封装好的软件中出现。幸运的是,静态分析工具可以帮你以更可重复的方式处理这些问题。静态分析工具通过解析用某种编程语言写的代码来找到问题。 这类工具中很多被称为 linter。传统意义上,linter 更注重的是检查代码中编码问题、bug、代码风格之类的问题,它们可能不会发现代码中的安全问题。例如, Coverity 是一个很流行的工具,它可以帮助寻找 C/C++ 代码中的问题。然而,也有一些工具专门用来检查源码中的安全问题。例如, Bandit 可以检查 Python 代码中的安全缺陷。而 gosec 则用来搜寻 Go 源码中的安全缺陷。 gosec 通过扫描 Go 的 AST(抽象语法树abstract syntax tree)来检查源码中的安全问题。 开始使用 gosec 在开始学习和使用 gosec

学习go语言的第一天

偶尔善良 提交于 2020-10-05 06:49:08
Go语言的特点 1.无继承和多态 2.强一致性 3.接口不需要显式声明(Duck Typing) 4.无异常处理 5.基于首字母的可访问特性 6.不用的Import或变量会引起编译错误 7.完整且卓越的标准库包 Go语言的优势 1.易上手 2.效率高 3.出身名门(Google公司) 4.自由高效,支持并发编程,包括过程,面向对象,面向接口,函数式编程。 5.强大的标准库:互联网应用,系统编程和网络编程 6.部署方便:二进制文件,Copy部署 7.简单的并发:goroutines和通道(创新之处) 8.稳定性:提供了软件生命周期的各个环节的工具:如 go tool,go fmt,go test 核心特性 1.静态语言 2.天生并发 3.内置GC 4.安全 5.语法简单 6.编译快速 3.环境搭建: 下载地址: https://golang.google.cn/dl/ 安装步骤很简单 Next完事 4.安装开发工具 Goland以及配置 下载地址:https://download.jetbrains.com/go/goland-2019.2.3.exe 安装步骤也是一直Next 运行时遇到的问题: CreateProcess error=216, 该版本的 %1 与你运行的 Windows 版本不兼容。请查看计算机的系统信息,然后联系软件发布者。 解决方式:

[Go] 转换编码处理网页显示乱码

南笙酒味 提交于 2020-10-05 05:51:06
在进行抓取网页或者获取一个网页的时候,有时会因为编码问题变成乱码,下面的函数可以转换一下编码 // 转换编码 func Encoding(html string ,ct string ) string { e,name: = DetermineEncoding(html) if name!= " utf-8 " { html =ConvertToStr(html, " gbk " , " utf-8 " ) e = unicode.UTF8 } r : = strings.NewReader(html) utf8Reader : = transform.NewReader(r, e.NewDecoder()) // 将其他编码的reader转换为常用的utf8reader all, _ := ioutil.ReadAll(utf8Reader) log.Println( string (all)) return string (all) } func DetermineEncoding(html string ) (encoding.Encoding, string ) { e, name, _ : = charset.DetermineEncoding([] byte (html), "" ) return e,name } 这个例子是把gbk转为utf8 来源: oschina

聊聊nacos-sdk-go的NamingProxy

和自甴很熟 提交于 2020-10-04 15:33:49
序 本文主要研究一下nacos-sdk-go的NamingProxy NamingProxy nacos-sdk-go-v0.3.2/clients/naming_client/naming_proxy.go type NamingProxy struct { clientConfig constant.ClientConfig nacosServer nacos_server.NacosServer } NamingProxy定义了clientConfig、nacosServer属性 NewNamingProxy nacos-sdk-go-v0.3.2/clients/naming_client/naming_proxy.go func NewNamingProxy(clientCfg constant.ClientConfig, serverCfgs []constant.ServerConfig, httpAgent http_agent.IHttpAgent) (NamingProxy, error) { srvProxy := NamingProxy{} srvProxy.clientConfig = clientCfg var err error srvProxy.nacosServer, err = nacos_server.NewNacosServer

Vivado与vscode实现关联(在Vivado中点击Go to Source会跳转到vscode中对应的行号)

你离开我真会死。 提交于 2020-10-04 15:33:04
敲黑板了!!!上图中的第3处一定要设置为 …/Microsoft VS Code/Code.exe -g [file name]:[line number] vscode的软件路径替换为读者自己的安装路径。 我试过其他的设置方式,都只是能跳到对应的文件,但是无法定位到行号(这点我认为也很重要,懂得都懂。) ps: 不知道以上的方法是个例,还是具有通用性。若是对于读者无效,望包涵。 来源: oschina 链接: https://my.oschina.net/u/4367225/blog/4640226

Go语言中interface接口的使用

ぃ、小莉子 提交于 2020-10-04 13:35:50
    在⾯向对象语⾔中,接⼝⽤于定义对象的⾏为。接⼝只指定对象应该做什么,但具体怎么做,接口不用管,实现细节交给里面的struct就可以了。 在Go语⾔中,接⼝是⼀组⽅法Methods[]签名。 接⼝只指定了struct应该具有的⽅法; 当某个struct为接⼝中的所有⽅法提供了具体的实现细节时,这个struct就被称为实现了该接⼝; 接⼝定义了⼀组⽅法,如果某个对象实现了该接⼝的所有⽅法,则此对象就实现了该接⼝。 Go语⾔的struct都是隐式实现接⼝的。 任何定义了接⼝中所有⽅法的struct,都被称为隐式地实现了该接⼝。 interface接口的定义 type 接⼝名字 interface {     ⽅法1([参数列表]) [返回值]     ⽅法2([参数列表]) [返回值]     ⽅法3([参数列表]) [返回值] } 使用接口的意义 第⼀,结构体类型T不需要显式地声明它实现了接⼝ I。只要类型 T 实现了接⼝ I 规定的所有⽅法,它就⾃动地实现了接⼝ I。 这样就像动态语⾔⼀样省了很多代码,少了许多限制。 第⼆,将结构体类型的变量显式或者隐式地转换为接⼝ I 类型的变量i。这样就可以和其它静态类型语⾔⼀样,在编译时检查参数的合法性。     案例如下: //myInterface.go // myInterfaceDuck project main.go

5.数据交换之网页输出显示(beego)

自古美人都是妖i 提交于 2020-10-04 10:22:09
5.数据交换之网页输出显示 文章目录 5.数据交换之网页输出显示 1、beego 采用了 Go 语言默认的模板引擎 2、设置模板路径: 3、当然我们不需要模板输出的,比如我们只写接口,我们可以手动关闭模板渲染 4、使用`.`来访问当前位置的上下文 4.1、 结构体数据渲染: 4.2、 数组数据渲染: 4.3、 map数据渲染: 4.4、 结构体和map组合渲染: 4.5、切片数据渲染: 1、beego 采用了 Go 语言默认的模板引擎 指定模板:c.TplName = “index.tpl” 默认支持 tpl 和 html beego.AddTemplateExt设置其他后缀 beego.AddTemplateExt(“后缀名”) 如果不设置该参数,那么默认会去到模板目录的 Controller<方法名>.tpl 查找, 例如上面的方法会找 maincontroller/get.tpl 数据渲染:c.Data[“Website”] = “beego.me” 前端获取数据:{ {.Website } } 两个换括号中变量名前有个点,这个点表示当前对象 2、设置模板路径: beego默认的路径是view,可以自己设置 重新设置模板路径: beego.SetViewsPath(“testview”) 配置文件中设置: viewspath = “myview” 3、当然我们不需要模板输出的