运维平台架构设计及开发(持续更新中...)

开发环境: Python 2.x GoLang 1.6 Django 1.6 Bootstrap 3.0 JQuery1.8 架构: 模块介绍: Agent:使用GoLang开发,主要收集主机信息、执行下发任务、主机状态上报、服务检测等 Master:使用GoLang开发,接收Agent上报的信息,存储到MySQL Dashboard:使用Python Django开发,前台展示及管理。前端使用B......
Python 2019年01月26日 17:15:58

Consul集群K/V数据(3)

Consul 提供了一个简单的键值存储(KV store)。它可以用于保存动态配置、辅助服务间协作、建立领导选举以及其他开发者想要实现的功能。 有两种方法可以访问 Consul KV 存储:通过 HTTP API 或者 Consul KV CLI。下面通过 Consul KV CLI 的使用方法。 ./consul kv get nginx/worker_connections Error! No......
Linux服务 2022年10月25日 09:46:07

Consul介绍与安装配置(1)

在传统的单体架构下不够灵活不能很好的适应变化,从而向微服务架构进行转换,而伴随着大量服务的出现,管理运维十分不便,于是开始搞一些自动化的策略,服务发现应运而生。所以如果需要使用服务发现,应该 了解 服务治理的痛点。 介绍 Consul 是 HashiCorp 公司的一个开源的服务注册与发现工具,具有分布式、高可用性、可横向扩展、多数据中心的服务发现和配置共享的服务软件。Consul 官网目前主要推......
Linux服务 2022年10月24日 10:36:39

Consul集群ACL配置(2)

Consul使用 Access Control Lists(ACL-访问控制列表)来控制对UI、API、CLI、服务通信和代理通信的访问;ACL的核心是将规则分组为策略,然后将一个或多个策略与令牌相关联。 Consul使用token的形式进行安全控制访问,这里的token就是随机的字符串,有了token就有对应的操作权限,就好比之前说到WebAPI接口加访问控制一样,通过一个授权token就可以访......
Linux服务 2022年10月24日 10:13:22

Python通过ssh代理连接MySQL

#!/usr/bin/env python # -*- coding:utf-8 -*- import sshtunnel import pymysql db_host = 127.0.0.1 db_user = root db_password = 123123 db_port = 3306 db_database = test ssh_keyFile = /Users/test/.ssh/id......
Python 2022年08月01日 17:44:19

Go实现通过ssh和gorm代理连接内网mysql数据库

package main import ( net fmt log golang.org/x/crypto/ssh github.com/go-sql-driver/mysql gorm.io/gorm/logger sql gorm.io/driver/mysql gorm.io/gorm io/ioutil ) type Dialer struct { client *ssh.Client }......
GoLang,MySQL 2022年06月11日 13:55:00

Go并发编程之GPM并发模型(2)

接着上一篇,这一篇主要介绍对GPM模型的理解,这也是被众多开发者喜爱的原因,Go的横空出世也基于此, 不同于Python基于进程的并发模型,Go采用轻量级的Goroutine来实现并发,可以大大减少CPU的切换。 Goroutine轻量级,主要体现两个方面: 上下文切换代价小:Goroutine 的上下文切换只涉及到三个寄存器(PC/SP/DX)的值修改,而对比线程的上下文切换则需要涉及模式切换(......
GoLang 2022年05月25日 16:28:27

Go序列化对象方法

二进制序列化binary库 package main import ( bytes encoding/binary fmt ) type Register struct { ACTION int32 SID int32 } func (r *Register) Write() []byte { buf := new(bytes.Buffer) var info Register info.ACTI......
GoLang 2022年05月24日 13:27:41

Go编程之sync包

在并发编程中同步通常说的锁的主要作用是保证多个线程或者 goroutine在访问同一片内存时不会出现混乱的问题。Go语言的sync包提供了常见的并发编程原语,主要有 Mutex、RWMutex、WaitGroup、Once、Pool、Map 和 Cond 等。我们来看下如何使用这些原语。 sync.Mutex Mutex是sync包中使用比较广泛的原语。它允许在共享资源上互斥访问(不能同时访问):......
GoLang 2022年05月23日 18:58:27

Go编程之反射reflect

反射是程序执行时检查其所拥有的结构,尤其是类型的一种能力,这是元编程的一种形式,同时也是造成混淆的来源。 每一种语言的反射模型都不同(很多语言根本不支持反射,Python通过hasattr方法实现)Go语言中的反射通过reflect包实现,实现了运行时反射,允许程序操作任意类型的对象。 reflect包中的两个数据类Type和Value: Type:表示一个Go类型(不是所有Go类型的Type值都......
GoLang 2022年05月23日 17:45:16

Go语言之sync.map

我们经常会碰到并发读写 map 而造成 panic 的情况,因为在并发读写的情况下,map 里的数据会被混乱(只读是线程安全的,同时读写是线程不安全的),对 map 并发读写时需要加锁,但这样性能并不高,Go语言在 1.9 版本中提供了一种效率较高的并发安全的 sync.Map,sync.Map 和 map 不同,不是以语言原生形态提供,而是在 sync 包下的特殊结构。 sync.Map 特性:......
GoLang 2022年05月23日 16:59:52