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

基于consul构建golang系统分布式服务发现机制

文地址-石匠的Blog: http://www.bugclosed.com/post/5 在分布式架构中,服务治理是一个重要的问题。在没有服务治理的分布式集群中,各个服务之间通过手工或者配置的方式进行服务关系管理,遇到服务关系变化或者增加服务的时候,人肉配置极其麻烦且容易出错。 之前在一个C/C++项目中,采用ZooKeeper进行服务治理,可以很好的维护服务之间的关系,但是使用起来较为麻烦。现在越来越多新的项目采用consul进行服务治理,各方面的评价都优于ZooKeeper,经过几天的研究,这里做一个总结。 zookeeper和consul比较 开发语言方面,zookeeper采用java开发,安装的时候需要部署java环境;consul采用golang开发,所有依赖都编译到了可执行程序...阅读全文

博文 2018-07-26 14:30:00 williamjie

Go36-12-函数

函数 在Go语言中,函数是一等(first-class)公民,函数类型也是一等的数据类型。 函数不但可以用于封装代码、分割功能、解耦逻辑,还可以化身为普通的值,在其他函数间传递、赋予变量、做类型判断和转换等等。函数值可以由此成为能够被随意传播的独立逻辑组件(或者说功能模块)。 一等公民 开头说的,函数是一等公民,函数类型是一等数据类型: package main import "fmt" type calcFunc func(int, int) int func add(x, y int) int { return x + y } func sub(x, y int) int { return x - y } func main() { var f1, f2 calcFunc f1, f2 ...阅读全文

博文 2019-01-08 20:35:14 骑士救兵

分布式从ACID、CAP、BASE的理论推进

作为当今互联网后端技术栈工程师、无论Golang、Java或者其他系,分布式的理论概念都逐步成为必备理论基础知识之一, 本文主要讨论分布式的CAP理论的推进,这是你走进分布式大门的第一块敲门砖。 提纲: 一、从本地事务到分布式理论 二、ACID理论 三、CAP理论 四、CAP理论“3选2”论证 五、BASE理论 附加:分布式概念 分布式实际上就是单一的本地一体解决方案,在硬件或者资源上不够业务需求,而采取的一种分散式多节点,可以扩容资源的一种解决思路。它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给多个计算机进行处理,最后把这些计算结果综合起来得到最终的结果。 那么在了解分布式之前,我们应该从一体式的构造开始说明。 一、从本地事务到分布式理论 理解第...阅读全文

博文 2020-03-27 11:36:18 aceld

2020 区块链 golang 版本(7)

封面 我们知道比特币的安全性来源 hash 加密和共识机制,所以我们今天聊一聊比特币中的共识机制。 分布式共识 分布式的 hash 表,系统有很多计算机,这些计算机共同来维护一个 hash 表。 Alice -> 12345 下面介绍关于分布式两个结论 关于分布式 FLP impossibility result 在一个异步系统里(网络延时没有上限),即使一个成员是有问题,也就是无法取得共识。 CAP Theorem C(Consistency) A(Availability) P(Partition tolerance) 任何一个分布系统,这个三个性质中最多只能满足两个,无法全部满足以上3性质。 分布式共识一个比较著名协议我 Paxos,Paxos 又能一直没有达到共识。这些理论我们简单了...阅读全文

阿里云文件存储 NAS 使用教程

课程介绍 阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas 课时列表 • 课时1:NAS入门与提高系列之基本概念 • 课时2:NAS入门与提高系列之典型应用场景 • 课时3:NAS入门与提高系列之如何在Windows下使用NAS 开始学习http://click.aliyun.com/m/27883/ ...阅读全文

软件结构很重要!嵌入式C语言修炼之道

模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了>相对论),C语言模块化程序设计需理解如下概念:(1) 模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;(2) 某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明;(3) 模块内的函数和全局变量需在.c文件开头冠以static关键字声明;(4) 永远不要在.h文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外...阅读全文

博文 2019-01-17 17:14:57 wangzijuan

五分钟学Java:如何才能学好Java Web里这么多的技术

副本_未命名.jpg 原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 系列文章介绍 本文是《五分钟学Java》系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年多的Java学习和工作经历,总结和沉淀下来的方法论,希望能让Java学习这件事变得更简单,作者目前在阿里做Java,忙里偷闲分享一些技术文章,有兴趣看本系列更多文章可以关注我的公众号【Java技术江湖】 系列文章将会把一些技术学习方法、过程、要领与我的学习经验相结合,更加浅显易懂,并且我也会把我学习时用的资料,书籍和文章拿出来分享给大家,节省你我的时间。所谓授人以鱼也要授人以渔,是本系列文章希望达到的目标。 本文思维导图 在这里插入图片描述 什么是Java Web 不知道Java We...阅读全文

博文 2020-03-05 03:32:48 程序员黄小斜

Go函数式编程以及在Tendermint/Cosmos-SDK中的应用

Go函数式编程以及在Tendermint/Cosmos-SDK中的应用 函数式编程(Functional Programming)实际是非常古老的概念,不过近几年大有越来越流行之势,连很多老牌语言(比如Java)也增加了对函数式编程的支持。本文结合Temdermint/Cosmos-SDK源代码,介绍函数式编程中最重要的一些概念,以及如何使用Go语言进行函数式编程。以下是本文将要讨论的主要内容: 一等函数 高阶函数 匿名函数 闭包 λ表达式 一等函数 如果在一门编程语言里,函数(或者方法、过程、子例程等,各种语言叫法不同)享有一等公民的待遇,那么我们就说这门语言里的函数是一等函数(First-class Function )。那怎样才能算是“一等公民”呢?简单来说就是和其他数据类型待遇差不多...阅读全文

博文 2019-07-12 19:34:18 CET_Talk

go学习笔记-goroutine的好兄弟channel

上一篇介绍了atomic包以及互斥锁 mutex来解决并发竞争状态的问题。这一篇主要来介绍go中与goroutine经常搭档的好兄弟channel channel不仅可以可以来用消除竞争状态,还可以用于不同的goroutine中进行通信,发送与接受数据。chaanel的定义有两种,分为有缓存与无缓冲 创建channel chan1 := make(chan int) // 创建一个无缓冲的 整形 channel chan2 := make(chan int,2)// 创建一个有缓冲的 整形 channel 上面的代码片段,我们分别创建了一个无缓冲的channel与一个有缓冲的channel。channel的创建是使用make(chan type,[lenght])来创建,如果指定了第二个参数...阅读全文

博文 2020-01-11 13:32:40 旧梦发癫

五分钟学Java:如何才能学好Java Web里这么多的技术?

副本_未命名.jpg 原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 系列文章介绍 本文是《五分钟学Java》系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年多的Java学习和工作经历,总结和沉淀下来的方法论,希望能让Java学习这件事变得更简单,作者目前在阿里做Java,忙里偷闲分享一些技术文章,有兴趣看本系列更多文章可以关注我的公众号【Java技术江湖】 系列文章将会把一些技术学习方法、过程、要领与我的学习经验相结合,更加浅显易懂,并且我也会把我学习时用的资料,书籍和文章拿出来分享给大家,节省你我的时间。所谓授人以鱼也要授人以渔,是本系列文章希望达到的目标。 本文思维导图 什么是Java Web 不知道Java Web这个词是从什么时候...阅读全文

博文 2020-03-05 03:32:48 程序员黄小斜

Snow——简单易用的Go语言业务框架

项目地址 中文文档 changelog Snow Snow是一套简单易用的Go语言业务框架,整体逻辑设计简洁,支持HTTP服务、队列调度和任务调度等常用业务场景模式。 Goals 我们致力于让PHPer更方便地切入到Go语言开发,在业务框架选择上贴合PHP主流框架的设计思想,以更低的学习成本快速熟悉框架,致力于业务逻辑的开发。 Features HTTP服务:基于gin进行模块化设计,简单易用、核心足够轻量;支持平滑重启; 任务调度:基于cron进行模块化设计,简单易用; 队列调度:基于自研的队列调度服务worker,通过Queue接口化,解耦队列调度与底层队列驱动;支持平滑关闭; Cache: 通用的接口化设计,框架实现了redis作为缓存底层驱动,支持可扩展; Database: 使用成...阅读全文

博文 2019-07-08 20:02:38 wilee

Go函数式编程以及在Tendermint/Cosmos-SDK中的应用

Go函数式编程以及在Tendermint/Cosmos-SDK中的应用 函数式编程(Functional Programming)实际是非常古老的概念,不过近几年大有越来越流行之势,连很多老牌语言(比如Java)也增加了对函数式编程的支持。本文结合Temdermint/Cosmos-SDK源代码,介绍函数式编程中最重要的一些概念,以及如何使用Go语言进行函数式编程。以下是本文将要讨论的主要内容: 一等函数 高阶函数 匿名函数 闭包 λ表达式 一等函数 如果在一门编程语言里,函数(或者方法、过程、子例程等,各种语言叫法不同)享有一等公民的待遇,那么我们就说这门语言里的函数是一等函数(First-class Function )。那怎样才能算是“一等公民”呢?简单来说就是和其他数据类型待遇差不多...阅读全文

博文 2019-07-12 18:32:37 CET_Talk

leetcode_621

Golang: 思路:任务调度,这里用了个很麻烦的实现,所以效率上来说不太高,思路可以这么想,如何将一个有长板和短板的木桶以最快的速度归0。 代码如下: func mergeTrees(t1 *TreeNode, t2 *TreeNode) *TreeNode { if t1==nil&&t2!=nil{ return t2 }else if t1!=nil&&t2==nil{ return t1 }else if t1==nil&&t2==nil{ return nil }else{ return &TreeNode{ Val:t1.Val+t2.Val, Left:mergeTrees(t1.Left,t2.Left), Right:mergeTrees(t1.Right,t2.Righ...阅读全文

博文 2020-04-01 09:33:05 淳属虚构

图解kubernetes批处理Job控制器的关键设计

K8s中的批处理任务模块主要是由Job控制器完成,今天我们就来关注下其底层的关键设计,包括完成状态、并行模式、并行策略等关键机制 1. 基础概念 在聊k8s的任务模块的实现的时候,我们先看一下传统的任务系统的设计与实现,然后聊下基于k8s的基础的概念 1.1 传统的任务系统设计 传统的任务系统设计主要可以分为master(任务分配/故障感知/负载均衡)、Worker(任务执行/任务监控/任务管理)、分布式协调(etcd等存储元数据)、任务仓库(存储任务的实现比如类或者接口)等几部分, 从大的部分又可以切分为两个部分管控端(分布式协调/master/仓库)、执行端(Worker),传统的任务系统大概就是这样 通常复杂的就是如何在master如何做任务的负载均衡、任务的快速完成、依赖等管控功能,...阅读全文