博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于gokit的微服务项目骨架ko
阅读量:6977 次
发布时间:2019-06-27

本文共 1446 字,大约阅读时间需要 4 分钟。

前段时间发布了一个小小的web开发项目骨架,性能与效率齐飞,开发速度在短暂时间熟悉go语言后应该是匹配php,ruby等这些脚本语言,而后期项目并发性能,基本并发到上千乃至上万tcp连接没问题。但从业务架构层面看,项目再发展,数据库存在瓶颈,单体项目耦合度高,可维护性差,可延展性差,存在很多问题。因而项目早期可以采用单体架构,但后期仍然推荐的是面向服务的分布式架构。分布式的架构模式虽然带来了增加的代码量,服务间沟通的成本,但整体项目更具有弹性,延展性更好。

项目地址:

gokit介绍

go语言的优点不用赘述,那么基于go的微服务框架有吗?就是一个go语言相关的微服务工具包。它自身称为toolkit,并不是framework。也就是gokit是将一系列的服务集合在一起,提供接口,从而让开发者自由组合搭建自己的微服务项目。基本上看完gokit的就可以动手模仿着写一个类似的小项目。gokit的结构分为:

clipboard.png

transport

决定用哪种方式提供服务请求,一般就是 http,rpc

endpoint

是gokit最重要的一个层,是一个抽象的接收请求返回响应的函数类型。在这个定义的类型里面会去调用service层的方法,组装成response返回。而gokit中的所有中间件组件都是通过注入的。

type Endpoint func(ctx context.Context, request interface{}) (response interface{}, err error)func(log Logger, in endpoint.Endpoint) endpoint.Endpoint {    return func(ctx context.Context, req interface{}) (interface{}, error) {            logger.Log("input", toJSON(req))            resp, err := in(ctx, req)            logger.Log("output", toJSON(resp), "err", err)            return resp, err    }}

service

所有的具体方法写在这里,可以理解为单体web框架中的控制器部分。

工具包

这三个层组成一个gokit微服务应用。此外,作为一个工具包,gokit为此提供了很多微服务工具组件。

clipboard.png

  • 认证组件(basic, jwt)
  • 回路熔断器
  • 日志组件
  • 普罗米修斯监控系统
  • 限流器
  • 服务发现系统接口(etcd, consul等)
  • 路由跟踪
  • ...

这些组件大大方便了我们开发一个微服务应用。

关于ko

是一个基于的微服务架构应用开发骨架。一个基本的微服务架构包括:分发层api网关,监控系统,日志系统,服务提供层等。的目的是提供一个架构参考,从而减短开发者上手微服务架构的时间,最终是想提供一个思路让开发人员能够在极短的时间内架构起一个正式环境完备功能的微服务架构应用,并可以马上着手于开发业务功能。同时,避免与各种基础服务之间耦合度过高,提供灵活的服务定制接口给开发者。会在的基础上,会提供一个解耦且功能完备的Api网关,带有数据连接等功能完备的服务层,以及辅助项目构建的命令行脚手架工具。目前还在不断完善开发中,会在本文中更新进度。附传统的基础模型架构图。

图片描述

参考资料

[1]

[2]
[3]

转载地址:http://okypl.baihongyu.com/

你可能感兴趣的文章
MailMail、RegeX等程序的云端版
查看>>
[Erlang 0072] Erlang XML处理解决方案
查看>>
从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作
查看>>
mmap学习
查看>>
X3D中Profile如何翻译
查看>>
7.14. revision
查看>>
第 175 章 Open Source Requirements Management Tool
查看>>
CentOS7安装配置redis-3.0.0
查看>>
SQL server 专业词汇
查看>>
Selenium2+python自动化25-js处理日历控件(修改readonly属性)
查看>>
ArcGIS制图之Sub Points点抽稀
查看>>
[高中作文赏析]假如真的有时光隧道
查看>>
selenium+python自动化81-html报告优化(饼图+失败重跑+兼容python2&3)
查看>>
thinkphp pathinfo nginx 无法加载模块:Index
查看>>
如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)
查看>>
单例模式
查看>>
iOS多线程编程之NSOperation和NSOperationQueue的使用
查看>>
SAP QM 'QM System' 有什么控制作用?
查看>>
Health Check in eShop -- 解析微软微服务架构Demo(五)
查看>>
项目沟通管理计划
查看>>