golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web
micro web
micro 功能非常强大,本文将详细阐述micro web 命令行的功能
阅读本文前你可能需要进行如下知识储备
本文应用环境
| 名称 | 描述 |
|---|---|
| 操作系统 | win10 |
| go version | go version go1.12.7 windows/amd64 |
| GOPATH | E:\winlion\gopath |
| GOPROXY | https://goproxy.io |
| G111MODULE | on |
| 命令行工具 | cmder工具,可自行百度安装 |
命令行说明
micro web指令全部参数如下
NAME:
micro web - Run the web dashboard
USAGE:
micro web [command options] [arguments...]
OPTIONS:
--address value Set the web UI address e.g 0.0.0.0:8082 [%MICRO_WEB_ADDRESS%]
--namespace value Set the namespace used by the Web proxy e.g. com.example.web [%MICRO_WEB_NAMESPACE%]
- address 用来指定web访问地址,默认是8082端口,
- namespace 用来指定开启web支持的服务空间,com.axample.web表示所有满足com.axample.web.*的应用都支持
典型应用场景
微信应用开发平台
A公司是一家小创业公司,a公司的主要业务是做微信小应用,目前他们公司只有一个域名www.xxx.com,A公司采用micro web 工具,可以不断迭代新应用到www.xxx.com域名下,比如昨天他们开发了一个应用demo1,外网用户访问地址https://www.xxx.com/demo1/,明天天他们开发了一个应用demo2,外网用户访问地址https://www.xxx.com/demo2/,最后这个平台长这样
| 服务名称 | 说明 | 访问地址 |
|---|---|---|
| com.techidea8.web.www | A公司的主域名 | http://www.xxx.com/www/ |
| com.techidea8.srv.wxmp | A公司的微信服务,如签名、分享、菜单管理等 | http://www.xxx.com/wxmp/ |
| com.techidea8.web.attach | A公司的资源上传服务 | http://www.xxx.com/attach/ |
| com.techidea8.web.pay | A公司的支付服务 | http://www.xxx.com/pay/ |
| com.techidea8.web.account | A公司的用户中心 | http://www.xxx.com/account/ |
| com.techidea8.web.article | A公司的写作类平台 | http://www.xxx.com/article/ |
| com.techidea8.web.demo1 | A公司的demo1应用 | http://www.xxx.com/demo1/ |
| com.techidea8.web.demox | A公司的demox应用 | http://www.xxx.com/demox/ |
a公司可以不断迭代业务,这个平台具备良好的扩张性。
分布式任务分发平台
Openwrite是一个面向技术人员的写作分发平台,用户在该平台一次写作,可以分发到·csdn/oschina/jianshu/juejin·等各个渠道,我们采用micro web开发如下微应用产品,后续可以不断迭代开发新渠道服务com.techidea8.channel*,不会影响现有业务。
| 服务名称 | 说明 | 访问地址 |
|---|---|---|
| com.techidea8.web.www | 网站首页 | http://www.xxx.com/www/ |
| com.techidea8.web.attach | 图片、资源等上传服务 | http://www.xxx.com/attach/ |
| com.techidea8.web.account | 用户中心 | http://www.xxx.com/account/ |
| com.techidea8.web.article | 文档中心 | http://www.xxx.com/article/ |
| com.techidea8.web.channelcsdn | csdn渠道应用 | http://www.xxx.com/channelcsdn/ |
| com.techidea8.web.channeljuejin | 掘金渠道应用 | http://www.xxx.com/channeljuejin/ |
实战hello,world!
业务梳理
假设我们需要实现类似于如下千人千面功能,具体应用场景如下
- 首页应用www,展示常用基本信息
- 推荐支持,不同的用户(uuid标识),显示不同的内容
服务设计如下
| 服务名称 | 说明 | 访问地址 |
|---|---|---|
| go.micro.web.www | 系统首页 | http://127.0.0.1:8082/www/ |
| go.micro.srv.recommend | 推荐服务 | http://127.0.0.1:8082/www/guess |
获得源代码并运行
重要的事情说3次
micro web 源代码https://idea.techidea8.com/open/idea.shtml?id=7
micro web 源代码https://idea.techidea8.com/open/idea.shtml?id=7
micro web 源代码 https://idea.techidea8.com/open/idea.shtml?id=7
下载解压后位置为%GOPATH%\src\techidea8.com\microapp\doc\web
$pwd
E:\winlion\gopath\src\techidea8.com\microapp\doc\web
$ls
recommend/ www/
依次执行如下指令即可
#切换到wwww目录下
src\techidea8.com\microapp\doc\web\www>go run main.go
#切换到recommend服务目录下
src\techidea8.com\microapp\doc\web\recommend>go run main.go
#启动web支持
src\techidea8.com\microapp\doc\web\recommend>micro web --namespace=go.micro.web
界面如下

关于www应用细节
- 创建应用框架
>micro new --type=web techidea8.com/microapp/doc/web/www
- 设计proto文件,这里需要请求一个Guess接口
#E:\winlion\gopath\src\techidea8.com\microapp\doc\web\www\proto\recommend\recommend.proto
service Recommend{
rpc Guess(Request)returns(Response){};
}
- 通过proto生成go文件
#E:\winlion\gopath\src\techidea8.com\microapp\doc\web\www\ 目录下
>protoc --proto_path=. --proto_path=E:/winlion/gopath/src --go_out=. --micro_out=. proto/recommend/recommend.proto
#
- 调用猜你喜欢服务,核心代码如下
//handler/handler.go
//go.micro.srv.recommend 是后端猜你喜欢服务名称
guessClient := recommend.NewRecommendService("go.micro.srv.recommend", client.DefaultClient)
rsp, err := guessClient.Guess(context.TODO(), &recommend.Request{
Uuid: request["uuid"].(string),//uuid是前端用户ID
})
- 猜你喜欢restful接口支持/www/guess
//默认需要加上服务名前奏
// register html handler
service.Handle("/", http.FileServer(http.Dir("html")))
// register call handler/www/guess
service.HandleFunc("/guess", handler.Guess)
- 启动web服务
$micro web --namespace=go.micro.web
#结果如下
2019/08/25 15:32:08 HTTP API Listening on [::]:8082
2019/08/25 15:32:08 Transport [http] Listening on [::]:57563
2019/08/25 15:32:08 Broker [http] Connected to [::]:57564
2019/08/25 15:32:08 Registry [mdns] Registering node: go.micro.web-32fafadb-a795-46bc-b4d8-ad9a30607a7e
关于推荐服务recommend细节
- 创建应用框架
>micro new --type=srv techidea8.com/microapp/doc/web/recommend
- 设计proto文件,这里需要请求一个Guess接口
#E:\winlion\gopath\src\techidea8.com\microapp\doc\web\recommend\proto\recommend\recommend.proto
service Recommend{
rpc Guess(Request)returns(Response){};
}
- 通过proto生成go文件
#E:\winlion\gopath\src\techidea8.com\microapp\doc\web\recommend\ 目录下
>protoc --proto_path=. --proto_path=E:/winlion/gopath/src --go_out=. --micro_out=. proto/recommend/recommend.proto
#
- 实现推荐服务,核心代码如下
//handler\recommend.go
//go.micro.srv.recommend 是后端猜你喜欢服务名称
func (e *Recommend) Guess(ctx context.Context, req *recommend.Request, rsp *recommend.Response) error {
log.Log("Received Recommend.Call request")
//具体推荐算法实在这里实现的,
//推荐算法得到结果后赋值给resp.Results
rsp.Results = "这是用户[" + req.Uuid + "]的推荐内容"
return nil
}
- 取消事件相关特性
我们这里不考虑事件,所以将事件相关特性取消,先一出subscriber目录,然后修改main.go
main.go
// 取消事件订阅支持
//micro.RegisterSubscriber("go.micro.srv.recommend", service.Server(), new(subscriber.Hello))
//取消事件发布支持
//micro.RegisterSubscriber("go.micro.srv.recommend", service.Server(), subscriber.Handler)
- 启动推荐服务
$go run main.go
推荐阅读
开源项目golang go语言后台管理框架restgo-admin
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web的更多相关文章
- springcolud 的学习(二).SpringCloud微服务框架
为什么选择SpringCloud因为SpringCloud出现,对微服务技术提供了非常大的帮助,因为SpringCloud 提供了一套完整的微服务解决方案,不像其他框架只是解决了微服务中某个问题. 服 ...
- golang微服务框架go-micro 入门笔记2.3 micro工具之消息接收和发布
本章节阐述micro消息订阅和发布相关内容 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架go-mi ...
- golang微服务框架go-micro 入门笔记2.4 go-micro service解读
本章节阐述go-micro 服务发现原理 go-micro架构 下图来自go-micro官方 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go- ...
- golang微服务框架go-micro 入门笔记1.搭建 go-micro环境
微服务的本质是让专业的人做专业的事情,做出更好的东西. golang具备高并发,静态编译等特性,在性能.安全等方面具备非常大的优势.go-micro是基于golang的微服务编程框架,go-micro ...
- go微服务框架Kratos笔记(一)入门教程
kratos简介 Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关功能及工具 本文基于kratos v2.0.3,windows平台,其他系统平台均可借鉴参考 环境搭建 Golang开发 ...
- kratos微服务框架学习笔记一(kratos-demo)
目录 kratos微服务框架学习笔记一(kratos-demo) kratos本体 demo kratos微服务框架学习笔记一(kratos-demo) 今年大部分时间飘过去了,没怎么更博和githu ...
- 【GoLang】go 微服务框架 && Web框架学习资料
参考资料: 通过beego快速创建一个Restful风格API项目及API文档自动化: http://www.cnblogs.com/huligong1234/p/4707282.html Go 语 ...
- 【GoLang】golang 微服务框架 go-kit
golang-Microservice Go kit - A toolkit for microservices kubernetes go-kit_百度搜索 Peter Bourgon谈使用Go和& ...
- # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)
目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...
随机推荐
- MYSQL索引的作用和创建
索引是查询优化最主要的方式: 查询方式: 一种是:全表扫描: 一种是:利用数据表上建立的所以进行扫描. 如:对表中name字段建立索引:则按照表中name字段进行索引排序,并为其建立指向数据表中记录所 ...
- 【JZOJ6230】【20190625】梦批糼
题目 一个$n\times m \times l $的立方体,有一些位置有障碍 一次操作会随机选择一个立方体,共有\(w\)次操作 询问所有操作都不选到障碍点,被选到至少一次的点的期望 $n ,m,l ...
- nginx之rewrite相关功能
Nginx Rewrite相关功能 Nginx服务器利用ngx_http_rewrite_module 模块解析和处理rewrite请求,此功能依靠 PCRE(perl compatible regu ...
- linux实现pwd
版本1: 调用系统接口getcwd,实现路径打印. /*** ***文件名:1_mypwd.c ***描述:通过系统函数getcwd实现pwd命令 ***/ #include<stdio.h&g ...
- 使用charles对jmeter进行抓包
- ES6 fetch方法封装
// 请求路径 let url = 'http://jsonplaceholder.typicode.com/users' // 传输数据参数 const dataName = { name: &qu ...
- 如何在ProXmoX VE 下虚拟机安装 黑群晖 DSM 6.1.6
ProXmoX 官方下载地址: https://www.proxmox.com/en/downloads Proxmox是一个非常优秀的开源虚拟化环境,集诸多优点于一身:开源免费,稳定可靠,架构简洁, ...
- rtsp 客户端请求视频的时候支持输入用户名和密码的格式
rtsp://[<username>[:<password>]@]<server-address-or-name>[:<port>][/<path ...
- API调试工具--------Postman
Postman一款非常流行的API调试工具.其实,开发人员用的更多.因为测试人员做接口测试会有更多选择,例如Jmeter.soapUI等.不过,对于开发过程中去调试接口,Postman确实足够的简单方 ...
- 解决Linux系统下面javamelody图片中文乱码问题
从windows系统中,copy了C:\Windows\Fonts\msyh.ttc和msyhbd.ttc 2个文件到 服务器的%JAVA_HOME%\jre\lib\fonts\fallback 目 ...