Blog

Istio 1.1 尝鲜记

Wednesday, Mar 20, 2019 by gobomb

环境 已经安装了 Kubernetes 集群,有1个 master 和4个 node。操作系统都是 CentOS Linux 7 下载 Istio 安装文件 curl -L https://git.io/getLatestIstio | ISTIO_VERSION=1.1.0 sh - export PATH="$PATH:/root/istio-1.1.0/bin" 安装 Tiller 这里选择在 Helm 和 Tiller 的环境中使用 helm install 命令进行安装的方式。 kubectl apply -f install/kubernetes/helm/helm-service-account.yaml 假如已经安装过,结果如下: helm init --service-account tiller 安装 istio-init chart 更新 Helm 的本地包缓存: helm repo add istio.io "https://gcsweb.istio.io/gcs/istio-prerelease/daily-build/release-1.1-latest-daily/charts/" 安装 istio-init chart,来启动 Istio CRD 的安装过程: helm install istio.io/istio-init --name istio-init --namespace istio-system 确认 Istio 的 CRD 都已经成功的提交给 Kubernetes API Server:

Continue Reading
post-image

Hiboot 属性配置和使用

Wednesday, Nov 21, 2018 by 邓冰寒 Go, Golang, hiboot, properties

作为一个网络应用,需要部署到不同都环境下,那配置文件就显得非常重要了,Hiboot允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置。Hiboot支持多种外部配置方式,并且按照自下而上的优先级配置,即默认属性优先级最低,命令行参数优先级最高, 命令行属性 应用 SetProperty 方法 操作系统环境变量 外部默认配置文件 config/application.yml 外部不同环境下的配置文件 config/application-${app.profiles.active}.yml 默认属性 命令行属性 默认情况下,Hiboot应用会将命令行任何参数(以--开头),如 --xxx=xxx, 可以使用自定义参数,也可以使用Hiboot的默认参数。 更多常见的应用属性请浏览这里 比如,我们以Hiboot例子helloworld为例, 通过传递Hiboot默认参数server.port配置不同端口为8081 helloworld --server.port=8081 ______ ____________ _____ ___ / / /__(_)__ /_______________ /_ __ /_/ /__ /__ __ \ __ \ __ \ __/ _ __ / _ / _ /_/ / /_/ / /_/ / /_ Hiboot Application Framework /_/ /_/ /_/ /_.___/\____/\____/\__/ /hiboot [INFO] 2018/11/23 18:06 Starting Hiboot web application hiboot on localhost with PID 68499 [INFO] 2018/11/23 18:06 Working directory: /Users/johnd/.

Continue Reading
post-image

Go语言环境搭建详解

Wednesday, Oct 31, 2018 by 邓冰寒 Go, Golang, development, environment

起源与发展 Go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目,即相关员工利用 20% 的空余时间来参与 Go 语言的研发工作。该项目的三位领导者均是著名的 IT 工程师:Robert Griesemer,参与开发 Java HotSpot 虚拟机;Rob Pike,Go 语言项目总负责人,贝尔实验室 Unix 团队成员,参与的项目包括 Plan 9,Inferno 操作系统和 Limbo 编程语言;Ken Thompson,贝尔实验室 Unix 团队成员,C 语言、Unix 和 Plan 9 的创始人之一,与 Rob Pike 共同开发了 UTF-8 字符集规范。自 2008 年 1 月起,Ken Thompson 就开始研发一款以 C 语言为目标结果的编译器来拓展 Go 语言的设计思想。 在 2008 年年中,Go 语言的设计工作接近尾声,一些员工开始以全职工作状态投入到这个项目的编译器和运行实现上。Ian Lance Taylor 也加入到了开发团队中,并于 2008 年 5 月创建了一个 gcc 前端。

Continue Reading
post-image

构建Go语言版本的gRPC高性能接口

Wednesday, Oct 31, 2018 by 邓冰寒 Go, Golang, grpc, hiboot

背景 作为一个网络应用开发者,我们知道接口的重要性,接口是网络应用的基石。接口关系到应用之间如何交互。而网络通讯的性能是我们非常关心的,那么接下来我将谈谈如何构建Go语言版本的gRPC高性能接口。 什么是gRPC? RPC是英语Remote Procedure Call的缩写,意思是远程程序调用。gRPC是一个跨语言的RPC框架,几乎原生支持所有主流语言。在gRPC中,客户端应用程序可以直接在不同机器上的服务器应用程序上调用方法,就像它是本地对象一样,使您更容易创建分布式应用程序和服务。 与许多RPC系统一样,gRPC基于定义服务的思想,指定可以使用其参数和返回类型远程调用的方法。 在服务器端,服务器实现此接口并运行gRPC服务器来处理客户端调用。 在客户端,客户端有一个stub(简称为一些语言的客户端),提供与服务器相同的方法。gRPC客户端和服务器可以在各种环境中运行和交互,从Google内部的服务器到您自己的应用,并且可以使用任何gRPC支持的语言编写。 所以,例如,您可以轻松地创建一个Java开发的服务,使用Go,Python或Ruby中的客户端。 gRPC使用protocol buffers作为其IDL(接口描述)和其底层消息交换格式。 什么是 Protocol Buffer Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。 演示代码详解 我们将通过一个详细的例子来说明如何构建一个gRPC服务端和客户端,其中使用到了Hiboot的grpc starter。 我们接下来要安装相关编译工具 安装编译工具 go get google.golang.org/grpc go get -u -v github.com/golang/protobuf/{proto,protoc-gen-go} 定义Protocol Buffer 下面我们定义了两个gRPC的服务,HelloService和HolaService 关于Protocol Buffer更详细资料请参考这个链接 syntax = "proto3";option java_multiple_files = true;option java_package = "io.grpc.examples.helloworld";option java_outer_classname = "HelloWorldProto";// target package name package protobuf;// The greeting service definition.

Continue Reading
post-image

Introduction to Hiboot

Monday, Oct 15, 2018 by John Deng Hiboot, web, cli, application

About Hiboot is a cloud native web and cli application framework written in Go. Hiboot is not trying to reinvent everything, it integrates popular libraries but make it simpler, easier to use. With auto configuration, you can integrate any other libraries easily with dependency injection support. Overview Web MVC (Model-View-Controller) Auto Configuration, pre-create instance with properties configs for dependency injection Dependency injection with struct tag name `inject:“”` or Init method Some useful utils, include enhanced reflection, struct copier, config file replacer, etc.

Continue Reading