前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务系列-架构

微服务系列-架构

作者头像
春哥大魔王
发布2018-04-17 17:38:06
5290
发布2018-04-17 17:38:06
举报
  • 模块即服务;
  • 微服务使用库,库定义成内存里面的调用,微服务定义成web请求或远程调用;
  • 独立可部署;
  • 接口调用;
  • 缺点是远程调用比本地重很多;
  • 按业务逻辑进行分配;
  • 分成产品而不是项目;
  • 使用http请求或消息;
  • 一般使用消息来做轻量级消息总线,做异步,关键是统一协议,例如:RMQ或AMQP;
  • 分散管理;
  • 各个模块可以采用各种实现来做;
  • 可以使用容忍读策略和消费契约来解决上下游通信问题;
  • 使用最终一致性,并用补偿策略来解决问题,如:消息队列;
  • 持续交付和持续集成;
  • 同步调用非常有害;

建立服务网关:

有了网关支持,可以根据需要把流量在新老系统之间切换。采用zk实现,所有服务注册到zk上,网关根据zk注册来将用户请求按比例分配到工作机上。在网关可以实现熔断和限流。

业务细分,读写分离:

接口拆分,微服务化:

将庞大系统按服务拆分,创建project。每个project不会超过5个接口,这些结构都是高内聚,同功能的,仅仅参数不同。拆分之后每个实现类都很少,不超过10个,代码行数不超过300行。

完善基础设施:

微服务环境上,采用git做版本控制,gitlab做代码审核,jenkins支持自动发布和上线。

  • 采用spring cloub作为我服务框架;
  • 系统拆分2大层,不包括前端系统,一层对外提供web服务,采用http/json。一层是业务逻辑,供web服务层调用,采用rpc来实现;
  • web层采用spring boot实现;
  • rpc层采用thrift来实现;
  • 网关使用nginx+lua实现load balance,限流,服务自动发现;
  • 基础设施,git+gitlab+jenkins;

微服务拆分:

rpc层微服务按表来拆分,自己连一个数据库,分为两层:数据访问层和业务逻辑层,如果业务逻辑层薄,可合并成一层;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 春哥talk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档