Java|想学好Java,怎么可能会不知道,什么是微服务?( 二 )


不要看好像挺复杂的 , 本质上都是为了管理服务 , 我以打车的例子大致说明下:

  • 在以前 , 我们若是要乘车 , 需要去找车 , 而对于车主来说也需要找乘客 。
  • 而现在 , 有打车服务了 , 我们若是要乘车直接叫滴滴就好了 , 而司机也方便找乘客 。
对于服务也是一样的 , 以前有什么问题?
  • 服务越来越多 , 要管理每个服务的地址 。
  • 服务之间调用关系错综复杂 , 难以理清 。
  • 服务过多 , 服务状态难以管理 。
为了解决上述问题 , 服务治理做了哪些?
  • 服务注册中心 , 实现服务自动注册 , 无需人为记录服务地址 。
  • 服务自动订阅 , 服务列表自动推送 , 服务调用透明化 , 无需关心依赖关系 。
  • 动态监控服务状态 , 人为控制服务状态即可 。
对于我个人来说 , 我就会用滴滴和司机之间的关系作为对比 , 来理解服务管理和服务之间的关系 , 不然专业术语太多了 , 也很难理解 。
4微服务
微服务和SOA比较像 , 但也有一些差别 。
①微:微服务的核心
也就是小的意思 , 服务拆分粒度很小 。 例如一个用户管理就可以作为一个服务 。
②面向服务
每个服务都要对外暴露Rest风格服务接口API , 并不关心服务的技术实现 。
你是用Java实现的也好 , 还是用Python实现的也罢 , 都可以 , 只要提供Rest的接口即可 。
③单一职责
微服务中每一个服务都对应唯一的业务能力 , 做到单一职责 。
④独立
  • 团队独立:每个服务对应独立的开发团队 。
  • 技术独立:因为是面向服务 , 提供Rest接口 , 使用什么技术没有别人干涉 。
  • 自治:自治是说服务间互相独立 , 互不干扰 。
  • 前后端独立:以前后端要为电脑端、手机端提供不同接口 , 现在只需要提供Rest接口 。
  • 数据库分离:每个服务都使用自己的数据源 。
  • 服务独立:服务间虽然有调用 , 但要做到服务重启不影响其它服务 。
二、服务调用方式【Java|想学好Java,怎么可能会不知道,什么是微服务?】我们以前写的代码本质上都是在一个服务中 , 属于服务内部:类与类之间的调用 。
那如何实现服务之间的调用呢?有两种方式:RPC调用和Http调用 。
1RPC调用
基于原生TCP通信 , 速度快 , 效率高 , 现在热门的dubbo , 都是RPC的典型代表 。


推荐阅读