基于gokit的微服务项目骨架ko
前段时间发布了一个小小的web开发项目骨架morningo,性能与效率齐飞,开发速度在短暂时间熟悉go语言后应该是匹配php,ruby等这些脚本语言,而后期项目并发性能,基本并发到上千乃至上万tcp连接没问题。但从业务架构层面看,项目再发展,数据库存在瓶颈,单体项目耦合度高,可维护性差,可延展性差,存在很多问题。因而项目早期可以采用单体架构,但后期仍然推荐的是面向服务的分布式架构。分布式的架构模式虽然带来了增加的代码量,服务间沟通的成本,但整体项目更具有弹性,延展性更好。 项目地址:https://github.com/chenhg5/ko gokit介绍go语言的优点不用赘述,那么基于go的微服务框架有吗?gokit就是一个go语言相关的微服务工具包。它自身称为
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为此提供了很多微服务工具组件。
这些组件大大方便了我们开发一个微服务应用。 关于koko是一个基于gokit的微服务架构应用开发骨架。一个基本的微服务架构包括:分发层api网关,监控系统,日志系统,服务提供层等。ko的目的是提供一个架构参考,从而减短开发者上手微服务架构的时间,最终是想提供一个思路让开发人员能够在极短的时间内架构起一个正式环境完备功能的微服务架构应用,并可以马上着手于开发业务功能。同时,避免与各种基础服务之间耦合度过高,提供灵活的服务定制接口给开发者。ko会在gokit的基础上,会提供一个解耦且功能完备的Api网关,带有数据连接等功能完备的服务层,以及辅助项目构建的命令行脚手架工具。目前ko还在不断完善开发中,会在本文中更新进度。附传统的基础模型架构图。
参考资料[1] https://www.jianshu.com/p/cff... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |