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

golang使用服务发现系统consul

本文的完整代码见 https://github.com/changjixiong/goNotes/tree/master/consulnotes ,如果文中没有显示链接说明链接在被转发的时候被干掉了,请搜索找到原文阅读。consul是什么"Consul is a distributed, highly available, datacenter-aware, service discovery and configuration system. It can be used to present services and nodes in a flexible and powerful interface that allows clients to always have an up-to...阅读全文

博文 2017-06-08 03:47:27 changjixiong

etcd 使用小记

咱们这不讲安装, 只讲使用. etcd,consul 都是分布式KV, 一般用于服务发现; 1 注册服务 这里使用 etcd.clientv3搞事情, GoDoc在 这, 以下是伪代码 // key 随你制定, 只要能标识是那个服务器(比如 root/game/node_1)即可. value 可以包含addr, 状态, 优先度等信息 client.OpPut(key,value) 这里的小提示: 最好实现健康检查, 再好的代码也有跑不动的一天, 好像etcd的健康检查只支持ttl(服务向etcd定时重新PUT), 所以记得设置TTL并整一个Tick定时执行以上代码吧. 不过consul支持两种健康检查, 一种是ttl, 一种是consul主动去检查服务状态(详情看最底下 ↓ 的参考), 个...阅读全文

博文 2017-06-07 06:07:03 bysir

跨境电商平台为何抛弃C#转投Go的怀抱

前言:跨境电商平台如何将业务从 C# 转换到 Go 语言,并最终均使用 Go 来实现?怎样从零打造一整套 Go 服务体系?怎样避免遇到转型微服务的坑?本文将通过 ezbuy 的资深开发工程师陈冶在 Gopher China 2017大会上的分享做详细介绍。正文:我们的平台在整个 Go 语言转型过程中涉及到一些微服务的转型,牵扯到微服务,如何管理这些服务,包括环境,这次分享我会从开发环境的构建,微服务选型,分布式追踪和跨数据中心四个方面来说。 一、开发环境构建1、规范开发环境每个人都有自己开发的环境,公司层面上很难保证每个人的环境是一样的,这样会导致很多兼容性的问题。有很多时候在本地开发很顺利,但一部署到线上或者到其他人的电脑就出现了莫名奇妙的问题,根源就在于环境不同。另一方面,我们在用微服务...阅读全文

博文 2017-08-10 00:48:21 陈治

RPCX使用案例

花了一个礼拜整理了一下 RPXC的使用方法,大致过程如下:服务器端开发首先,我们需要实现自己的服务,这很简单,就是定义普通的方法即可:package example import ( "context" "fmt" ) type Args struct { A int B int } type Reply struct { C int } type Arith int func (t *Arith) Mul(ctx context.Context, args *Args, reply *Reply) error { reply.C = args.A * args.B fmt.Printf("call: %d * %d = %d\n", args.A, args.B, reply.C) ret...阅读全文

博文 2018-08-07 16:59:58 lsr199461

Golang 通过 Consul 实现分布式锁

Consul 是什么 Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对. 命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品. 一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 并且支持 ACL 访问控制. Consul 的使用场景 docker 实例的注册与配置共享 coreos 实例的注册与配置共享 vitess 集群 SaaS 应用的配置共享 与 confd ...阅读全文

博文 2017-07-11 11:04:05 徐学良

跟大家一起学习golang

之前一直在华为做C++开发,现在从华为毕业出来了,找了一个大牛当师父,努力学习互联网技术。基础比较差,只有多努力了。现在做这个项目 是一款 金融类 APP,用golang开发,以后经常来这里跟大家进行技术交流。先介绍一下我们这个项目用到的大致技术 整体架构:采用微服务模式的架构,前台开发就是 IOS, Android, WEB, 通过调用http接口 调到后台,后台gateway部分实现主要采用 github.com/codegangsta/negron, github.com/gorilla/mux/mux.go, github.com/dgrijalva/jwt-go 这三个第三方库。gateway只负责 数据校验,请求转发,权限验证 这三个模块工作,具体业务逻辑交给...阅读全文

HTTP(S) 路由器fabio

fabio 是一个快速、现代、zero-conf 负载均衡 HTTP(S) 路由器,用于部署 consul 管理的微服务。 fabio 由 eBay Classifieds Group 开发, 用于处理 marktplaats.nl 和 kijiji.it 的流量。Marktplaats 所有的流量都经过 fabio ,每秒有数千个请求,分发于数个 fabio 实例。但我们并没有观察到任何延迟。 特性: * Go 语言单一二进制,没有额外的依赖。 * Zero-conf * 通过后台观察器热重载路由表 * 轮转和随机分布 * Traffic Shaping (send 5% of traffic to new instances) Graphite metrics * 请求跟踪 * W...阅读全文

基于微服务库的可插拔RPC go-micro

示例服务可以在 [examples/service](https://github.com/micro/go-micro/tree/master/examples/service) 找到。 特征 **特征 ** **包 ** **内置插件 ** **描述** Discovery [Registry](https://godoc.org/github.com/micro/go-micro/registry) consul 用来沟通的一种 定位服务 方式 Client [Client](https://godoc.org/github.com/micro/go-micro/client) rpc 用来将RPC请求变成服务 Cod...阅读全文

开源项目 2016-03-21 16:00:00 micro

PostgreSQL 管理工具Stolon

Stolon是一个cloud native的PostgreSQL高可用管理工具。它之所以是cloud native的是因为它可以在为容器内部的PostgreSQL提供高可用(Kubernetes 集成),而且还支持其他种类的基础设施(比如:cloud IaaS,旧风格的基础设施等) ![image](https://static.oschina.net/uploads/space/2017/0314/175929_Rxas_2903254.png)、 Stolon 是由3个部分组成的: keeper:他负责管理PostgreSQL的实例汇聚到由sentinel(s)提供的clusterview。 sentinel:it负责发现并且监控keeper,并且计算最理想的clustervie...阅读全文

grpc+consul

最近在学习研究golang的rpc框架,这两天学习了grpc,学习demo,https://github.com/nosixtools/LearnGrpc目前两大主流跨语言的RPC框架:gRPC,Thrift 算是屠龙刀跟倚天剑吧,萝卜青菜各有所爱,就看各位看官的实际需求和兴趣了。开始主题,gprc-go官方未提供目前主流(consul,zookeeper,etcd)服务注册和发现的实现,这部分需要根据自己公司的注册中心实现就好了,官方给出了基于DNS的实现,可以查看这个文件https://github.com/grpc/grpc-go/blob/master/resolver/dns/dns_resolver.go 。官方虽然没有给出具体的实现,不过给出这部分的接口的定,这样方便了各语言这...阅读全文

博文 2018-08-22 19:35:12 何亚祥

Golang的Etcd客户端

Etcd和Consul都是非常出名的服务化治理工具。本篇先来讲一下Etcd的使用。 学会使用 安装 go get github.com/coreos/etcd/client 引用 "github.com/coreos/etcd/client" Example cfg := client.Config{ Endpoints: []string{"http://127.0.0.1:2379"}, Transport: client.DefaultTransport, // set timeout per request to fail fast when the target endpoint is unavailable HeaderTimeoutPerRequest: time.Second...阅读全文

博文 2017-08-20 12:04:58 leegoway

grpc(5):使用grpc+consul 开发服务调用

1,consul 服务发现 在使用了几次之后终于感受到了这个系统挺好的了。 在一个小的团队里面,要做服务发现,做的简单高效。 可以直接使用 consul 作为服务发现,服务检查的系统。 不用自己去开发了。真的很方便,只要部署下就可以了。 github 上放了代码,都是很简单的。 https://github.com/freewebsys/grpc-go-demo 2,重新研究consul启动 发现之前是使用dig 进行操作的,因为consul官方网站也是推荐使用的。 但是其实可以使用ping ,nslookup 也是一样的。 但是需要修改consul的端口。 consul agent -dev -ui -server -node=consul-dev -client=10.0.2.15 -d...阅读全文

博文 2017-07-12 02:30:18 freewebsys

HTTP反向代理、负载均衡软件 Traefik

![traefik.logo.png](https://github.com/containous/traefik/blob/master/docs/img/traefik.logo.png?raw=true) Træfɪk 是一个新型的http反向代理、负载均衡软件,能轻易的部署微服务. 它支持多种后端 ([Docker](https://www.docker.com/), [Swarm](https://docs.docker.com/swarm), [Mesos/Marathon](https://mesosphere.github.io/marathon/), [Consul](https://www.consul.io/), [Etcd](https://coreos.com/e...阅读全文

开源项目 2016-04-07 16:00:00 containous

Go实践微服务 -- 服务发现

服务的注册发现对于微服务来说是一个非常重要的环节,在单一架构应用中,service之间的互相调用,通过一个固定的host和port来发起REST或者RPC来调用,但是在微服务架构中,各个服务往往是动态变化的,所以需要一个服务发现机制来发送客户端的请求到动态的service实例中去。 在利用go micro来实现服务发现便利很多,micro中默认支持使用 Consul 来做服务发现,当然它使用插件机制(go-plugins)还支持 Etcd, Gossip, NATS等其他的第三方服务注册发现工具。在每个服务启动的时候,都将自己注册到registry上,退出时也自动解注册,具体实现我们可以来看一下go-micro/service.go的相关代码片段: ...... func (s *servi...阅读全文

博文 2018-07-11 10:34:45 Ryan是菜鸟

使用golang库props轻松使用配置源文件,zookeeper、consul

``` props是统一的配置工具库,将各种配置源抽象或转换为类似properties格式的key/value,并提供统一的API来访问这些key/value。支持 properties 文件、ini 文件、zookeeper k/v、zookeeper k/props、consul k/v、consul k/props等配置源,并且支持通过 Unmarshal从配置中抽出struct;支持上下文环境变量的eval,`${}`形式;支持多种配置源组合使用。 github地址:https://github.com/tietang/props ``` # props 统一的配置工具库,将各种配置源抽象或转换为类似properties格式的key/value,并...阅读全文

Microservices

<p>Hi all<br/> Can someone please explain me, what are microservices?<br/> Can I use for communication with web browser like with REST/API.<br/> I am imaging a microservice like: a web server that waiting for incoming requests. When a request comes in, I will call a session service(microservice) that validate, if the request...阅读全文

资源 2015-05-17 19:14:08 blov

Consul 入门笔记

Consul [ˈkɑ:nsl] 是一个分布式的服务发现和配置管理工具,本文是根据consul 入门指南 整理的笔记。 1. 安装 系统是三台虚拟机: CentOS release 6.8 CentOS release 7 Ubuntu 16.04 LTS 前往 官网下载地址 下载相应系统最新的二进制包,复制consul_VERSION_linux_amd64.zip 到3个节点的 consul 目录下。 cd ~/consul unzip consul_VERSION_linux_amd64.zip // 解压得到 consul 二进制文件 // 将consul 软链到环境变量目录 sudo ln -s ~/consul/consul /bin/consul // 验证是否安装成功 con...阅读全文

博文 2017-03-10 05:49:06 xugang

基于Consul的分布式锁实现

我们在构建分布式系统的时候,经常需要控制对共享资源的互斥访问。这个时候我们就涉及到分布式锁(也称为全局锁)的实现,基于目前的各种工具,我们已经有了大量的实现方式,比如:基于Redis的实现、基于Zookeeper的实现。本文将介绍一种基于Consul 的Key/Value存储来实现分布式锁以及信号量的方法。 http://blog.didispace.com/spring-cloud-consul-lock-and-semphore-2...阅读全文

Golang 通过 Consul 实现分布式锁

Consul 是什么 Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对. 命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品. 一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 并且支持 ACL 访问控制. Consul 的使用场景 docker 实例的注册与配置共享 coreos 实例的注册与配置共享 vitess 集群 SaaS 应用的配置共享 与 confd ...阅读全文

博文 2017-02-10 04:28:44 谢权

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

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

博文 2017-03-17 05:52:23 失去梦想的咸鱼

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

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

博文 2017-02-24 08:00:44 石匠

基于Consul的分布式信号量实现

本文将继续讨论基于Consul的分布式锁实现。信号量是我们在实现并发控制时会经常使用的手段,主要用来限制同时并发线程或进程的数量,比如:Zuul默认情况下就使用信号量来限制每个路由的并发数,以实现不同路由间的资源隔离。http://blog.didispace.com/spring-cloud-consul-lock-and-semphore-2...阅读全文

Jaeger源码分析——服务发现与注册

文:Jaeger源码分析——服务发现与注册 声明  Jaeger官方并没有明确说明其服务注册和服务发现的具体使用和介绍,这部分功能是在分析源码的时候,发现其原理与服务注册和服务发现类似,所以结合自己对服务注册和服务发现的认识,做一次总结,有错还请指点。 TChannel服务注册和服务发现  Jaeger不借助第三方工具也能实现服务注册和服务发现,这部分功能由其依赖的RPC框架提供。 第三方注册——手动注册 go run cmd/agent/main.go --collector.host-port=192.168.0.10:14267,192.168.0.11:14267  在启动agent的时候,可配置多个collector静态地址,这部分地址会形成一张注册表。 注册表 注册表结构 git...阅读全文

博文 2017-12-08 18:04:39 小卜邪

Docker 1.12的哪些特性使它更像 kubernetes?

Docker 1.12版本最近刚刚发布,这篇文章对它的新特性进行了概述和对比描述。本文涵盖了 Docker 1.12 中的六大新特性:内置 swarm命令、服务发现、自愈功能、安全、负载均衡、滚动升级,相关的使用文档和demo视频链接也都包含在里面。 ## 内置 swarm 命令 Docker engine 中增加了 docker swarm 命令,它用于取代之前通过容器创建swarm节点的方式。现在,创建一个swarm节点,只需要在每个节点上运行一条命令。在第一个节点上运行以下命令: ![](http://blog.tenxcloud.com/wp-content/uploads/2016/08/new1.png) “”是该节点的内网IP,同...阅读全文

How expensive is using RPC in microservice framework? Do devs use any other method to interact between their services.

<p>I wrote a monolithic web application for server, but while researching realize that there is a microservice framework (having services for each module) which works really good as all services can work independently. Development can be easy as we can add new services as we build them. Main concern is using RPC good for interacting between M...阅读全文

资源 2015-04-29 19:12:22 blov

Consul服务注册发现与Fabio反向代理

Consul Consul是一个注册与发现的服务, 并且支持健康检查 二进制安装 https://releases.hashicorp.com/consul/1.2.2/consul_1.2.2_linux_amd64.zip 下载并解压, 然后拷贝二进制文件到 /usr/local/bin 启动consul 开发模式启动consul consul agent -dev -config-dir=/etc/consul -bind=0.0.0.0 -client=0.0.0.0 参数说明 agent -- 使用agent模式跑起来 -dev -- 使用开发模式启动agent -config-dir -- 配置文件目录, 这里存放json文件以文件的形式注册服务 -bind=0.0.0.0 --...阅读全文

博文 2018-08-23 20:34:57 渺小Y

golang实现基于redis和consul的可水平扩展的排行榜服务范例

本文的完整代码见https://github.com/changjixiong/goNotes/tree/master/redisnote ,https://github.com/changjixiong/goNotes/tree/master/utils 及https://github.com/changjixiong/goNotes/tree/master/reflectinvoke如果文中没有显示链接说明链接在被转发的时候被干掉了,请搜索找到原文阅读。## 概述 排行榜在各种互联网应用中广泛存在。本文将用一个范例说明如何利用redis和consul实现可水平扩展的等级排行榜服务。## redis的使用 实现排行榜有2个地方需要用到redis: 1.存储玩家的排行信息,这里使用的是Sor...阅读全文

博文 2017-06-14 14:21:18 changjixiong

golang consul-grpc 服务注册与发现

在微服务架构里面,每个小服务都是由很多节点组成,节点的添加删除故障希望能对下游透明,因此有必要引入一种服务的自动注册和发现机制,而 consul 提供了完整的解决方案,并且内置了对 GRPC 以及 HTTP 服务的支持 总体架构 服务注册与发现 服务调用: client 直连 server 调用服务 服务注册: 服务端将服务的信息注册到 consul 里 服务发现: 客户端从 consul 里发现服务信息,主要是服务的地址 健康检查: consul 检查服务器的健康状态 服务注册 服务端将服务信息注册到 consul 里,这个注册可以在服务启动可以提供服务的时候完成 完整代码参考: https://github.com/hatlonely/hellogolang/blob/master/sa...阅读全文

博文 2018-06-23 23:34:39 hatlonely

微服务架构实践(服务框架)

目标 高性能 性能高是必须的,对于创业公司来说,不停的堆机器也是一个比较大的成本,能省则省。 资源拆分隔离 对资源进行拆分,需要每个服务提供相应的接口,服务之间不能直接访问其他服务的数据库或者缓存。 高可用 暂定目标是99.9的可用性。 开发语言 由于我们的新项目没有历史包袱,所有的模块都是重新开发,所以我们可以自由地选择开发语言和开发框架。以前我们的项目后端开发语言比较杂,有golang的项目,php的项目,还有一小部分是nodejs的项目。新项目我决定统一后台开发语言,选择golang作为我们的主力后端开发语言。golang在我们这里主要有以下优势: golang在性能和开发效率上有很好的平衡,语法上很简单,并发编程简单高效,基础库健全。 自带一些pprof包可以profile当前程序的...阅读全文

博文 2018-07-12 13:35:42 周小叨_REE

弱网络下,非幂等性操作的分布式微服务处理

背景 在浏览器访问服务器时,网速非常慢的情况下。为了获取结果,用户常常会进行重复点击操作。这将会使得一些非幂等性操作的操作结果变得非常不可靠。 举例而言,用户进行付款操作就是一个非幂等性操作。 非幂等性,简单而言,就是一个操作是不可重复的。 方案 在用户浏览器cookie中,加上idempotent_token ,然后在各个微服务中使用拦截器拦截,并且使用分布式锁 进行全局锁定。 由于微服务是分布式的,那么将会出现一种情况是,在某种负载均衡的策略,用户在访问仓库微服务(1),并且同时访问仓库微服务(2),并且同时对库存进行修改。这种情景是合乎情理的,并且他们将会带上同一个idempotent_token进行仓库的微服务操作。这个时候是必须要使用分布式锁进行加锁操作。 原理与实现 拦截器 /*...阅读全文

博文 2017-10-13 13:04:52 浑身演技

go微服务系列之二

这是使用gomicro开发微服务系列的第二篇,在上一篇中我只是使用了user-srv和web-srv实现了一个demo,在这里我将实用consul实现服务发现。如果想直接查阅源码或者通过demo学习的,可以访问[ricoder_demo](https://github.com/wiatingpub/demo)。 如何编写一个微服务?这里用的是go的微服务框架go micro,具体的情况可以查阅:http://btfak.com/%E5%BE%AE%E6%9C%8D%E5%8A%A1/2016/03/28/go-micro/ ##### 一、如何安装consul 我的开发系统采用的是ubunt16.04,这里就给出ubuntu下安装consul的步骤: ```bash $ wget https...阅读全文

博文 2017-10-16 02:06:15 wiatingpub

go-micro 框架初探

得益于Go语言的编译快性能高特点,在云原生时代其作为服务端编程语言发展迅速,尤其是微服务领域,已逐渐形成一个良好的生态,基于Golang的微服务框架如今有很多,如go-kit、go-micro、kite、gizmo等,每一种都自有其优点。今天就来探一探go-micro框架。 一、go-micro是什么 go-micro是基于Go语言实现的插件化RPC微服务框架,与go-kit,kite等微服务框架相比,它具有易上手、部署简单、工具插件化等优点。 go-micro框架提供了服务发现、负载均衡、同步传输、异步通信以及事件驱动等机制,它尝试去简化分布式系统间的通信,让我们可以专注于自身业务逻辑的开发。所以对于新手而言,go-micro是个不错的微服务实践的开始。 二、go-micro 架构 2.1...阅读全文

博文 2018-12-30 23:34:46 yabohe

grpc(4):使用 golang 调用consul api 接口,注册user-tomcat服务

1,关于consul dubbo的注册中心是zookeeper,redis。 motan的注册中心是zookeeper,consul。 kubernetes的注册中心是 etcd。 使用consul的好处是服务发现啥的都支持了。 可以使用域名进行负载均衡。 也是一个不错的 Server-Side Discovery Pattern 。 2,启动consul服务,调用接口 首先要在服务器安装一个consul服务: http://blog.csdn.net/freewebsys/article/details/56296013 然后下载go的客户端。 go get github.com/hashicorp/consul 然后就可以使用 consul api服务了。 package src imp...阅读全文

博文 2017-07-12 02:30:09 freewebsys

服务发现之Consul

consul是一个可以提供服务发现,健康检查,多数据中心,Key/Value存储等功能的分布式服务框架 用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。使用起来也较为简单。Consul用Golang实现,因此具有天然可移植性(支持Linux、Windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合。 Consul 的使用场景 docker 实例的注册与配置共享 coreos 实例的注册与配置共享 vitess 集群 SaaS 应用的配置共享 ...阅读全文

博文 2018-10-12 18:34:40 Kernel_Panic

golang grpc 负载均衡

微服务架构里面,每个服务都会有很多节点,如果流量分配不均匀,会造成资源的浪费,甚至将一些机器压垮,这个时候就需要负载均衡,最简单的一种策略就是轮询,顺序依次选择不同的节点访问。 grpc 在客户端提供了负载均衡的实现,并提供了服务地址解析和更新的接口(默认提供了 DNS 域名解析的支持),方便不同服务的集成 使用示例 conn, err := grpc.Dial( "", grpc.WithInsecure(), // 负载均衡,使用 consul 作服务发现 grpc.WithBalancer(grpc.RoundRobin(grpclb.NewConsulResolver( "127.0.0.1:8500", "grpc.health.v1.add", ))), ) 创建连接的时候可以使...阅读全文

博文 2018-07-11 03:35:42 xjtuhit

DockOne微信分享(九十六):爱油科技基于SpringCloud的微服务实践

【编者的话】本次分享主要介绍了爱油科技基于Docker和Spring Cloud将整体业务微服务化的一些实践经验,主要包括: 微服务架构的分层和框架选型服务发现和配置管理服务集成和服务质量保证基于领域驱动设计实施DevOps 从单体应用到微服务单体应用对于单体应用来说,优点很多,例如: 小而美,结构简单易于开发实现部署门槛低,单个Jar包或者网站打包即可部署可快速实现多实例部署 然而随着业务复杂性的上升,业务规模的扩大,缺点也显现出来,例如: 随着业务发展更多的需求被塞进系统,体系结构逐渐被侵蚀反应堆林立被技术绑架,难以为特定业务选择平台或框架,尽管可能有更适宜的技术做这件事协作困难,不同业务的团队在一个系统上进行开发相互冲突难以扩展,为了热点业务而不得不同时扩容全部业务,或者难以继续扩容 ...阅读全文

博文 2017-06-25 16:25:25 starlight36

golang grpc 负载均衡

微服务架构里面,每个服务都会有很多节点,如果流量分配不均匀,会造成资源的浪费,甚至将一些机器压垮,这个时候就需要负载均衡,最简单的一种策略就是轮询,顺序依次选择不同的节点访问 grpc 在客户端提供了负载均衡的实现,并提供了服务地址解析和更新的接口(默认提供了 DNS 域名解析的支持),方便不同服务的集成 使用示例 conn, err := grpc.Dial( "", grpc.WithInsecure(), // 负载均衡,使用 consul 作服务发现 grpc.WithBalancer(grpc.RoundRobin(grpclb.NewConsulResolver( "127.0.0.1:8500", "grpc.health.v1.add", ))), ) 创建连接的时候可以使用...阅读全文

博文 2018-06-24 05:34:43 hatlonely

Golang 微服务 - 03 以 consul 方式注册服务

开发十年,就只剩下这套Java开发体系了 >>> 安装 Install Consul 下载地址 https://www.consul.io/downloads.html,解压后,将 consul_1.2.3_windows_amd64\consul.exe 拷贝到 GOBIN 目录下(比如:C:\Users\your-host-name\go\bin) Run the Agent 使用 Git Bash Here,输入如下命令,会看到相应日志 $ consul agent -dev ==> Starting Consul agent... ==> Consul agent running! Version: 'v1.2.3' Node ID: '542fc5d7-cb10-22e7-54bc...阅读全文

博文 2018-09-23 01:33:15 nnealguo

[jaeger] 四、微服务之调用链(Feign+SpringCloud)

终于到了我们的重点,微服务了。与使用OkHttp3来实现的客户端类似,Feign接口本来也就是一个Http调用,依然可以使用Http头传值的方式,将 Trace 往下传。本文更多的是关于 SpringCloud 的一些知识,你需要了解一些基本的 Spring 相关的知识。更多系列,请关注公众号小姐姐味道,本文相关代码的github地址,见:https://github.com/sayhiai/example-jaeger-opentracing-tutorial-004复制代码安装ConsulSpringCloud的注册中心,我们选用Consul。consul也是用golang开发的。从consul官网下载二进制包以后,解压。./consul agent -bind127.0.0.1-dat...阅读全文

博文 2019-05-14 18:34:52 符文杰9527

GO语言包问题

这个项目:https://github.com/smallnest/rpcx 下面文档中说: install the basic features: ``` go get -u -v github.com/smallnest/rpcx/... ``` If you want to use reuseport、quic、kcp, zookeeper, etcd, consul registry, use those tags to go get 、 go build or go run. For example, if you want to use all features, you can: ``` go get -u -v -tags "reuseport quic...阅读全文