在整个微服务架构的搭建过程当中,咱们须要作的第一步就是对服务进行拆分,将一个完整的系统模块化,经过对各个模块互联,共同完成一个系统的工做。既然要作到模块化,那么必须明白你的系统的需求究竟是什么,即你要作的这个系统须要实现哪些功能,明确了功能之后,再对功能进行划分,将具备类似做用的功能划分为一个模块,最后再决定须要用什么样的方式去实现你的模块,最后才是正式开始敲代码。数据库
在咱们的我的博客中,我将网站划分为了如下几个部分:json
主页里面天然须要作一些概况展现,例如:文章总数、访问总数、评论总数、最近文章、最近留言、最热文章、做者推荐等,能够说主页里面跨越了多个模块的访问,那么简单的实现方式就是经过多个Ajax去访问不一样的模块来进行动态加载数据。安全
技术随笔中天然是要有文章列表,经过加载文章列表,浏览者能够选择本身感兴趣的文章而后进行查看详情,即文章详情页面。在技术随笔页面,也应该包含最热文章和推荐文章,这样能够方便浏览者进行选择。服务器
文章详情重点展现的是文章的内容以及文章评论。架构
该模块能够说与技术随笔模块实现方式彻底一致,也拥有书籍列表、最热书籍、推荐书籍、书籍详情以及评论,因此能够将它们概括为一个模块,只须要在Type列进行标记,便可分开。app
这里对每一个浏览网站的用户提供了留言功能,针对每一条留言,能够有多条回复,对于这种存储结构,用Mo'ngodb存储最为适合。框架
这部分包含了留言管理、文章发布等功能,这部分模块天然就须要有权限控制,只有网站管理员才能进行文章发布、留言管理,而通常的用户只有留言网站的权限。模块化
用于识别用户的身份以及相应权限,为了知足网站扩展性以及迎合目前趋势,身份认证受权咱们固然是采用Identity Server4来实现。微服务
有了上面的功能的分析,咱们接下来能够进行服务划分了。网站
网关服务用于向外提供一个统一的访问地址,而在内部进行请求的转发,你须要在json文件中设置它的上游服务器和下游服务器,这样,全部对上游地址的请求,都会被转发到下游服务器,具体状况等到搭建Ocelot网关服务器的时候再进行详细解释,如今只须要明白,Ocelot的做用就是对外提供一个统一的地址,能够是你的域名,而后它会将请求按配置转发到多个节点上。
该服务主要用于提供身份认证和受权,即OAuth2+OpenID Connect,在用户访问一些接口时,如留言等,会要求身份认证,这是就须要进行登录处理,当验证完毕后,会得到access-token和id-token,而后能够用access-token对接口访问,id-token表明了用户身份。
以前说过,文章和书籍服务实现方式彻底一致,包括文章/书评发布、评论等,因此将它们归为一个模块。注意,这部分的文章/书评的发布和删除,必须是管理员权限才能管理。
留言服务归为一个单独的模块,选择Mongodb存储留言列表,留言服务与文章书籍服务交互甚多,引入HttpClient后,必定要用Polly库保证服务的稳定性。留言删除必须是管理员权限才能管理。
网站日志,好比网站有什么异常啊,或者记录哪一个接口延时较大等,以便后续改进,须要注意这部分权限必须为系统管理员才能访问。
微服务之间的消息不免须要进行通讯,例如,当其余服务发生了异常,须要用日志服务来进行异常记录,可是两个服务不在一个节点上,这种状况就须要使用咱们的RabbitMQ来传递异常消息。其余服务利用经过EventBus投递消息,日志服务只须要接收消息进行存储便可。
最后,你们都知道Redis很是适合用于作网站浏览量统计、热度统计等,因此可使用Redis来为主页须要显示的几个部分提供支撑。
整个系统架构以下图所示:
图中,须要注意如下几点:
今天就先这样吧,下一篇会先把数据库的表间关系设计好,第一次写多多包涵。