我想打破我的单片机到微服务,但我仍然坚持它。需要建议

时间:2016-08-01 11:21:48

标签: architecture microservices

到目前为止,我的开发应用程序计划在网络和移动设备上提供,因此我决定将其作为微服务进行。

到目前为止我的应用程序可以执行的操作如下所示:

  • 注册(电子邮件,用户名,密码,密码确认)
  • 登录(电子邮件,密码)
  • 使用Facebook登录(如果数据库中存在电子邮件则自动登录,或创建新记录,然后在数据库中不存在电子邮件时自动登录)
  • 查看文章
  • 发表文章
  • 编辑文章
  • 删除文章

如上所述,我应该闯入多少服务我不确定将所有操作拆分为服务,例如注册服务/登录服务,还是将其分组,因为用户服务是正确的方式。

另一个问题,当我单独拆分服务时如何获取作者的文章数据以在我的网站上呈现? 构建新的代理服务,在文章服务中获取文章数据然后之后在用户服务中获取作者数据?或者,不需要代理服务,只需简单地获取文章数据,然后在我的Web应用程序控制器中创作数据。

1 个答案:

答案 0 :(得分:1)

  

到目前为止,我的开发应用程序计划在网络和移动设备上提供,因此我决定将其作为微服务进行。

根据您的应用程序将支持多个平台这一事实选择微服务(MS)方法是不可取的。如果您之前从未处理过微服务架构,那么构建具有强大上下文边界的模块化整体结构可能更好。通过这种方式,可以更容易地专注于编程和实现应用程序,稍后您可以逐步将monolith分解为微服务,一次一个(即,您从具有低流量的模块开始,如注册服务)。此外,直接进入微服务,除非你正在为自己的经验或乐趣做一个项目,适合过早优化的类别。有关Monolith第一种方法的更多信息,Martin Fowler写了一篇关于它的great article

  

如上所述,我应该闯入多少服务?

[我正在回答拆分后端系统并通过API从前端调用MS。] 注册和登录应该是一个不同的服务,因为通常注册使用频率较低(一旦用户注册,他只是从现在开始登录)而不是登录.Facebook登录将签署MS。 查看文章也比发布,编辑或删除(您拥有博客平台或Facebook)更频繁,因此一个MS将提供数据来查看文章,一个MS将用于发布,编辑或删除文章。

  

当我单独拆分服务时,如何让作者在我的网站上呈现文章数据?

MS artchitecture最常见的方法是多语言持久性,其中每个MS都有自己的数据库,包含它实际编辑或更新的表。然后,您可以通过调用其API来访问其他MS的数据(查看文章服务在其Article表中还有作者ID,然后您使用作者ID调用用户服务/注册服务以获取其完整信息)虽然这提供了更紧密耦合的架构。

另一种选择是以事件的形式存储数据,其中新用户注册是一个事件,存储在用户服务MS数据库中并发送到某个队列或主题,其他服务可以注册以从其接收事件并存储他们数据库中的事件。这样您将复制数据,但将具有更松散耦合(和异步)的体系结构。 Google事件驱动的数据管理有关此方法的更多信息。