Go语言中文网 为您找到相关结果 175

大规模的可观察性:构建Uber的预警生态系统

Uber的软件架构包含数千种微服务,这些微服务使团队能够快速迭代并支持我们公司的全球增长。这些微服务支持各种解决方案,例如移动应用程序,内部和基础结构服务以及产品,以及会影响城市和郊区的这些产品的复杂配置。 为了维持我们的增长和架构,Uber的Observability团队建立了一个强大的,可扩展的指标和警报管道,负责在服务出现问题时立即检测,缓解并通知工程师。具体来说,我们构建了两个数据中心警报系统,分别称为uMonitor和Neris,它们流入同一通知和警报管道。 uMonitor是我们基于指标的警报系统,它针对指标数据库M3运行检查,而Neris主要在主机级基础架构中寻找警报。 Neris和uMonitor都利用公共管道发送通知和重复数据删除。我们将深入研究这些系统,并讨论如何采取更多...阅读全文

GO语言的环境配置

楼主为Mac版本 1. 下载GO 下载地址:http://www.golangtc.com/download  2. 配置环境变量 vim ~/.bash_profile # go的官方目录 export GOROOT=/usr/local/go # go的公共下载目录 export GOPATH=/opt/gopath source ~/.bash_profile 3.Idea 1.下载go插件 参考地址:http://jingyan.baidu.com/article/f25ef25446109c482c1b821d.html 点击 Preferences  搜索:Plugins, 点击红色位置:Browse repositories  在“Manage Repository”对话...阅读全文

博文 2016-12-01 05:00:02 江中炼

如何优雅的落地一个微型分布式架构

设计该系统初衷是基于描绘业务(或机器集群)存储模型,分析代理缓存服务器磁盘存储与回源率的关系。系统意义是在腾讯云成本优化过程中,量化指导机房设备扩容。前半部分是介绍背景,对CDN缓存模型做一些理论思考。后半部分会实际操作搭建一个微型但是五脏俱全的分布式通用系统架构,最后赋予该系统一些跟背景相关的功能,解决成本优化中遇到的实际问题。缓存服务器存储模型架构(背景):​图1 存储模型腾讯CDN的线上路由是用户à分布于各地区各运营商的OC->SOC->SMid->源站。各个层级节点部署的都是缓存服务器。来自用户的部分请求流量命中服务器,另一部分产生回源流量。随着业务带宽自然增长,用户端带宽增长,假设业务回源率不变的情况下,磁盘缓存淘汰更新(淘汰)速率变快,表现为以下业务瓶颈(iowait变高、回源带...阅读全文

博文 2018-09-27 19:17:09 tuomaochengxuyuan

如何设计一个微型分布式架构?

序言(初衷)设计该系统初衷是基于描绘业务(或机器集群)存储模型,分析代理缓存服务器磁盘存储与回源率的关系。系统意义是在腾讯云成本优化过程中,量化指导机房设备扩容。前半部分是介绍背景,对CDN缓存模型做一些理论思考。后半部分会实际操作搭建一个微型但是五脏俱全的分布式通用系统架构,最后赋予该系统一些跟背景相关的功能,解决成本优化中遇到的实际问题。缓存服务器存储模型架构(背景): 图1 存储模型腾讯CDN的线上路由是用户à分布于各地区各运营商的OC->SOC->SMid->源站。各个层级节点部署的都是缓存服务器。来自用户的部分请求流量命中服务器,另一部分产生回源流量。随着业务带宽自然增长,用户端带宽增长,假设业务回源率不变的情况下,磁盘缓存淘汰更新(淘汰)速率变快,表现为以下业务瓶颈(iowait...阅读全文

博文 2018-09-21 16:34:47 Java架构解析

可跨异构数据存储系统——数据集成平台使用教程

课程介绍 数据集成(Data Integration)是阿里集团对外提供的可跨异构数据存储系统的、可靠、安全、低成本、可弹性扩展的数据同步平台,为20+种数据源提供不同网络环境下的离线(全量/增量)数据进出通道。 产品详情:https://www.aliyun.com/product/cdp 课时列表 • 课时1:数据集成-产品简介 • 课时2:数据集成-开发模式 • 课时3:数据集成-增量同步 • 课时4:数据集成-整库迁移 开始学习http://click.aliyun.com/m/27855/ ...阅读全文

ERP物理机迁移至阿里云实践

摘要: ERP物理机迁移至阿里云实践 机房选型 随着公司的不断发展,业务量逐渐增大,对信息化的要求也越来越高,随之对信息部的要求也越来越多,为此公司决定对现有的信息系统进行升级改造. **ERP物理机迁移至阿里云实践** 一、机房选型 随着公司的不断发展,业务量逐渐增大,对信息化的要求也越来越高,随之对信息部的要求也越来越多,为此公司决定对现有的信息系统进行升级改造.在升级改造之初,公司对自建机房和购买云端服务器也进行了综合对比,经过综合对比,发现云端服务器优势还是比较大,最终选择了在云端部署,优点主要体现在以下几点: BGP多线机房,全国访问流畅均衡 可在线更换操作系统 WEB在线管理,简单方便 内置主流正版系统,window正版激活 ...阅读全文

第一章:理解Android.bp

介绍Android最新的编译系统 一、简介 早期的Android系统都是采用Android.mk的配置来编译源码,从Android 7.0开始引入Android.bp。很明显Android.bp的出现就是为了替换掉Android.mk。 再来说一说跟着Android版本相应的发展演变过程: Android 7.0引入ninja和kati Android 8.0使用Android.bp来替换Android.mk,引入Soong Android 9.0强制使用Android.bp 转换关系图如下: android_build ; 通过Kati将Android.mk转换成ninja格式的文件,通过Blueprint+ Soong将Android.bp转换成ninja格式的文件,通过androidm...阅读全文

golang:goroutinue原理笔记

G M P模型 G —— goroutinue对象,经go语句创建 M —— 系统线程,和P关联后运行G,上限10000 P —— 调度器,和M关联后运行G,数量由 runtime.MAXGOPROCS 设置,默认为CPU核数,上限256 此外还有一个系统调度器(runtime.sched),负责维护一些全局队列。M的状态 自旋中:M正在从运行队列获取G, 这时候M会拥有一个P 执行中:M正在执行go代码, 这时候M会拥有一个P 挂起中:M正在执行阻塞的syscall, 这时M并不拥有P 休眠中:M发现无待运行的G时会进入休眠,并添加到空闲M链表中, 这时M并不拥有PP的状态 Pidel:当前P未和任何M关联 Prunning:当前P已经和某个M关联,M在执行某个G Psyscall:当前P...阅读全文

博文 2020-03-08 12:32:44 RaymondW

API网关使用教程

课程介绍 API 网关(API Gateway),提供API托管服务,涵盖API发布、管理、运维、售卖的全生命周期管理。辅助用户简单、快速、低成本、低风险的实现微服务聚合、前后端分离、系统集成,向合作伙伴、开发者开放功能和数据。 产品详情:https://www.aliyun.com/product/apigateway 课时列表 • 课时1:创建一个 API • 课时2:如何调用 API • 课时3:如何生成和使用 SDK • 课时4:如何设置流量控制 • 课时5:这些地方容易出错 开始学习http://click.aliyun.com/m/27880/ ...阅读全文

BDEX知识科普之去中心化交易协议与跨链的关系

本文引自区块链研习社。 2019年是去中心化交易所成长迅速的一年。随着数字货币生态发展,去中心化交易逐渐成为币圈最喜欢的方式。各路去中心化交易所接连出现,犹如雨后春笋,好不热闹。 不过对用户来说,虽然去中心化交易技术一直在发展,但是数字货币流通中仍然有一个痛点,就是跨链。 跨链和去中心化撮合交易有什么关系呢?让我们来分析一下,什么是去中心化撮合交易,以及什么是跨链。 去中心化交易协议 简介:通过链上或链下撮合引擎,撮合买家和卖家进行数字货币交易,去中心化撮合交易引擎,就是服务于去中心化交易所的撮合交易程序。 解决问题:解决数字货币买卖交易效率和资金安全问题。 跨链 简介:同一数字货币资产同时在不同公链上流通或同一应用同时在不同公链运行,目前主要是资产跨链流通。 解决问题:使得不同公链上的用户...阅读全文

如何设计一个微型分布式架构?

序言(初衷) 设计该系统初衷是基于描绘业务(或机器集群)存储模型,分析代理缓存服务器磁盘存储与回源率的关系。系统意义是在腾讯云成本优化过程中,量化指导机房设备扩容。前半部分是介绍背景,对CDN缓存模型做一些理论思考。后半部分会实际操作搭建一个微型但是五脏俱全的分布式通用系统架构,最后赋予该系统一些跟背景相关的功能,解决成本优化中遇到的实际问题。缓存服务器存储模型架构(背景): 图1 存储模型腾讯CDN的线上路由是用户à分布于各地区各运营商的OC->SOC->SMid->源站。各个层级节点部署的都是缓存服务器。来自用户的部分请求流量命中服务器,另一部分产生回源流量。随着业务带宽自然增长,用户端带宽增长,假设业务回源率不变的情况下,磁盘缓存淘汰更新(淘汰)速率变快,表现为以下业务瓶颈(iowai...阅读全文

博文 2018-09-28 18:34:42 Java架构007

golang win7环境搭建

下载idehttps://www.jetbrains.com/go/download/#section=windows 下载sdkhttps://golang.org/dl/ ide设置goroot 安装目录 发现ide 不能生成执行文件,虽然日志打印正常 GOROOT=D:/go-sdk GOPATH=E:/Hello_golang D:/go-sdk\bin\go.exe build -o E:\Hello_golang\bin\hello.exe main "D:\installsoft\Gogland 171.4694.61\bin\runnerw.exe" E:\Hello_golang\bin\hello.exe Hello, World! 只能通过cmd去生成这时候就要在系统配...阅读全文

博文 2017-07-22 07:07:59 球球之家

go语句初探

go语句和通道类型是Go语言的并发编程理念的最终体现。相比之下,go语句在用法上要比通道简单很多。与defer语句相同,go语句也可以携带一条表达式语句。注意,go语句的执行会很快结束,并不会对当前流程的进行造成阻塞或明显的延迟。一个简单的示例如下: go fmt.Println("Go!") 可以看到,go语句仅由一个关键字go和一条表达式语句构成。同样的,go语句的执行与其携带的表达式语句的执行在时间上没有必然联系。这里能够确定的仅仅是后者会在前者完成之后发生。在go语句被执行时,其携带的函数(也被称为go函数)以及要传给它的若干参数(如果有的话)会被封装成一个实体(即Goroutine),并被放入到相应的待运行队列中。Go语言的运行时系统会适时的从队列中取出待运行的Goroutine并...阅读全文

博文 2016-09-08 09:00:05 freedomai

要优雅退出吗?dubbogo给你

dubbogo Apache Dubbo是由阿里开源的一个RPC框架,而dubbogo则是相对应的go语言版本: 之前dubbogo一直没有优雅退出的机制,终于有小伙伴忍不住了强烈要求我们实现这个部分。艰难摸鱼了两周之后,我才把这个搞完,该功能的PR是https://github.com/apache/dubbo-go/pull/255。 当我们讨论优雅退出的时候,最基本的要求是自动无损停机。它同时强调了自动和无损两个方面。 首先是自动,而与自动对应的则是手动了。手工介入的缺陷是显而易见的,它要求我们在应用下线的时候手动摘掉流量。这一步可以通过网关、负载均衡或者注册中心来实现。它还容易忘和出错,如果这个东西还要求到运维身上,那就真的是下个线都得求爷爷告奶奶,开发体验十分不好。 而无损,关键则...阅读全文

golang简单应用

学习的golang的练习,推荐学习golang。https://www.liwenzhou.com mian.go 文件 package main import ( "fmt" "os" ) func showAction() { fmt.Println("学生管理系统!") fmt.Println("1. 添加学生信息") fmt.Println("2. 编辑学生信息") fmt.Println("3. 显示学生信息") fmt.Println("4. 退出学生管理系统") } //getInput 获取输入信息 func getInput() *Student { var ( name string id int ages int ) fmt.Println("输入信息") fmt.Pr...阅读全文

Golang面试之Linux系统

参考 深入理解Linux的CPU上下文切换 CPU上下文切换 Linux 是一个多任务操作系统,它支持同时运行的任务数量远大于 CPU 个数。其实这些任务没有真正的同时运行,是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。 而在每个任务运行前,CPU 都需要知道任务从哪里加载、从哪里开始运行,需要系统事先设置好 CPU 寄存器和程序计数器。CPU 寄存器是 CPU 内置的容量小、速度极快的内存。而程序计数器则是用来存储 CPU 正在执行的指令位置、或即将执行的下一条指令位置。它们都是 CPU 在运行任务前必须依赖的环境,也被叫做 CPU 上下文。 上下文切换,就是先把前一个任务的 CPU 上下文保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳...阅读全文

博文 2020-05-08 23:32:45 网管同学

微服务监测的五大原则

一、背景容器和微服务的出现并得到大量应用,从根本上改变了应用系统的组成和运行方式。而随着开发人员开始利用编排系统来管理和部署容器,规则进一步发生了变化。以往主机上的一个简单应用,现在已成为一个复杂的、动态编排的、多容器的体系架构,这同时也对应用的监测提出了全新的挑战。Sysdig,是专注于系统故障排查和监控工具的公司,其产品Sysdig Cloud是定位于容器系统故障排查和监控的平台。在今年召开的JFrog SwampUp用户大会上,Sysdig公司提出监测容器及构建在其上的微服务的五大关键原则。这些原则充分考虑了容器和微服务与传统架构在运维方式上的差异。本文即是根据Sysdig公司在本次大会上的演讲视频整理而成的。二、微服务是什么要正确地监测微服务,首先要正确地理解什么是微服务。​演讲首先...阅读全文

一、环境搭建

点击链接获得对应版本的包:https://studygolang.com/dlwindow下直接安装msi就好,linux看这个链接我想把go的开发环境迁移到sublime上,所以还有以下步骤:1.打开sublime > 首选项 > 浏览插件目录2.这时候打开一个文件夹,下载这个,解压之后把文件夹放到步骤一打开的目录3.点击 > 工具 > 编译系统 > 新建编译系统 输入{ "cmd": ["go", "run", "$file_name"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "working_dir": "$file_path", "selector": "source.go"}命名为Golang,然后选用这个编译...阅读全文

博文 2018-11-22 05:34:39 eftales

记一次websocket车祸

写在前面 最近在修改调试系统中的日志展示,日志展示用的是websocket,用curl不好测试,所以动手写了一个客户端来查看系统日志。 websocket client 代码如下(代码中有bug,不要复制粘贴) package main import ( "fmt" "log" "os" "os/signal" "syscall" "golang.org/x/net/websocket" ) func main() { url := os.Args[1] origin := os.Args[2] fmt.Printf("Dial url: %s ,origin: %s\n", url, origin) ws, err := websocket.Dial(url, "", origin) if...阅读全文

博文 2019-08-21 20:02:39 北二条

通用抽奖工具之系统设计

前言 上篇文章《通用抽奖工具之需求分析》我们已经通过一些常见的抽奖场景,得到了符合这些抽奖场景的抽奖工具五要素: 抽奖五要素 要素名称 第一要素 活动 第二要素 场次 第三要素 奖品 第四要素 中奖概率 第五要素 均匀投奖 以及创建一个抽奖活动的5个基本步骤,如下: 活动配置 场次配置 奖品配置 奖品中奖概率配置 奖品投奖配置 上篇文章回顾 《通用抽奖工具之需求分析》 需求已经分析完了,今天我们就来看看这通用抽奖工具具体的设计,分为如下三个部分: DB设计 配置后台设计 接口设计 DB设计 第一要素活动配置的抽奖活动表: -- 通用抽奖工具(万能胶Glue) glue_activity 抽奖活动表 CREATE TABLE `glue_activity` ( `id` int(11) uns...阅读全文

P的状态转换

声明 下面的分析均基于Golang1.14版本。 状态图 P状态图 主要流程 1.procresize创建,Go程序初始化时初始CPU数量个P。 2.acquirep进入运行状态。当有新的G创建或waiting状态的G变得可运行,并且有P空闲时,通过acquirep获取p来运行最新的G。 3.entersyscall,进入系统调用状态。当P绑定的M正在运行的G进入系统调用状态,P也随之进入系统调用状态。 4.exitsyscallfast,退出系统调用状态。如果G快速退出系统调用,此时P理应等待G,当G退出系统调用时,继续运行G的代码。 5.retake,如果G长时间处于系统调用,此时P应与对应的G,M解绑。考虑到如果所有G都阻塞在系统调用,则整个Go程序都阻塞在系统调用,无法执行用户代码,...阅读全文

博文 2020-05-16 15:32:44 不争_900c

撮合引擎开发:日志输出

欢迎关注「Keegan小钢」公众号获取更多文章 撮合引擎开发:开篇 撮合引擎开发:MVP版本 撮合引擎开发:数据结构设计 撮合引擎开发:对接黑箱 撮合引擎开发:解密黑箱流程 撮合引擎开发:流程的代码实现 撮合引擎开发:缓存和MQ 日志需求 我们都知道日志在一个程序中有着重要的作用,撮合引擎也同样需要一个完善的日志输出功能,以方便调试和查询数据。 对一个撮合引擎来说,需要输出的日志主要有以下几类: 程序启动的日志,包括连接 Redis 成功的日志、Web 服务启动成功的日志; 接口请求和响应数据的日志; 启动了某引擎的日志; 关闭了某引擎的日志; 订单被添加到 orderBook 的日志; 成交记录的日志; 撤单结果的日志。 另外,撮合引擎产生的日志会非常多,所以还应该做日志分割,按日期分割是...阅读全文

博文 2019-12-04 11:35:43 Keegan小钢

新装Linux操作系统后,要保留哪些自启动服务?

和Windows系统一样,Linux服务器运行过程中也会一些没用的软件服务默认运行,这些占用了很多系统资源,也会有安全隐患,所以一般是建议关闭的。那么,工作中Linux主机到底需要有哪些开机自启动服务呢? 新装Linux系统之后,有必要保留的开机自启动服务有5个: Ø sshd:远程连接Linux服务器时要用到,所以必须开启,不然就无法提供远程连接服务了。 Ø rsyslog:日志相关软件,这是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog程序将各种信息写到各个系统日志文件中。 Ø network:系统启动时,如果想激活或关闭各个网络接口的话,可以考虑开启。 Ø crond:用于周期性的执行系统及用户配置的任务计划。有需要时开启。几乎是运维工作中必须要用的一个软件。 Ø sy...阅读全文

博文 2019-11-15 16:40:15 zhouzhou2018

my-project 后端系统搭建(2) golang+docker

后端的搭建规划是:启动一个go docker 镜像的container, 用于编译golang项目,并把container的输出(main文件)指向指定目录:/var/lib/jenkins/workspace/my-project-backend 即($PWD)jenkins job的workspace, 然后再把main文件拷贝到一个固定目录下,重命名在执行。 之所以重命名是因为文件名字为main的不容易让人理解这个可执行文件的本意。golang build可以自定义输出结果的名字,但是好像有点复杂?? 设计细节解释: docker一编译出来就放到jenkins job workspace 下目的是: 可以从jenkins 页面就可以看出是否有成功编译出main文件,因为jenkins已...阅读全文