SpringCloud 微服务 (五) 随笔

微服务最近比较流行,而后你们都去用他了,新项目也好,老项目也好,程序员嘛,对新的技术,新的风格有追求是很好的表现,但也不能盲目直冲,话又说回来了,学了不用搞毛线html

本篇总结一下新应用场景与老项目转微服务应用状况node

 

案件发生地 : 新系统 、老项目程序员

动机 : 往前看,跟着新潮流 . 外带点尝鲜,装逼行为数据库

调查 : 若是是老项目的话,现有的架构是个什么存在,是否适合微服务架构,转向是否合理,就像皮卡丘不进化会更好看,小火龙进化了能飞,固然进化了能力都会有提高,也会有缺点.服务器

发展 : 从架构发展 ORM 到 MVC 到 RPC 再到 SOA数据结构

ORM 单一应用架构 : 当应用流量很小或只给内部人员小应用,将全部功能都部署在一块儿,减小部署节点和成本,方便; ORM框架就能够站撸架构

MVC 垂直应用架构 : 当应用流量会变更的扩大,将应用垂直拆分红几个不相干的依赖层,提高效率负载均衡

RPC 分布式服务架构 : 当垂直应用愈来愈多,交互变得复杂,将各个核心业务水平拆分为独立的服务,组建服务中心,能更快速的响应多变的需求(不少时候须要垂直水平一块儿完成构建)框架

SOA 面向服务架构 : 这个不说了,mark(ESB),自我扩展.分布式

 

另外须要了解的是分布式事务CAP,是企业集成中的一个技术难点,也是每个分布式系统架构中都会涉及到的东西,特别是在微服务架构中不可避免,若是老项目转微服务,这点是否符合?

关于CAP能够参考下面一片文章, banner是伊利丹,做为一个wower,都懂得

https://www.cnblogs.com/savorboard/p/distributed-system-transaction-consistency.html

 

若是项目已经很稳定的运行了,建议就不要去改他了,要么公司太有钱了,要么人太闲了

什么老的OA系统啊,就给固定的某个部门使用的,也不必动用微服务了

一些流量小的应用也同样,不必了,固然每一个boss都会认为个人东西是最好的,怎么可能没人用

写到这里,感慨: boss永远是最后一个知道公司要倒闭的人,心痛个人钱...

 

服务拆分

第一点 多节点扩展: 利用负载均衡将多个同样的应用, 来控制应用的扩展收缩能力,调控容器与可用性

第二点 数据分区: 这个比较直白,每一个服务器负责一个数据的子集,每一个服务器运行的应用是同样的

第三点 功能解耦: 将不一样的模块分红不一样的服务

 

不得不提到 单一职责,一个服务只作一件事情

服务与服务之间,修改一个不用致使须要修改一连串的其余服务,而且A服务中的功能,都应该在A服务中,这两点实现 低耦合,高内聚

若是拆分微服务的时候,改动一个,引发一连串的事件须要改动的话,说明是项目拆分不合理

 

按业务划分职责,通常会比较明显体现,是一种方式,好比订单,商品,发票;

还能够划分一些与业务不相关的第三方服务组件,好比发送消息,邮件;

怎么拆分,拆分到多细,我以为凡事无绝对,并非拆的越细越好,看场景需求

 

拆分先考虑功能,后考虑数据

从单一项目拆分的时候,都会遇到一种状况, 若是一个A数据,同时被B,C服务共用,才能完成一次接口任务,那么A数据称为状态,依赖A数据的服务称为状态服务,拆分的时候须要将状态服务转化为无状态服务,关注点分离(mark: 领域驱动设计)

 

拆数据

每一个微服务都有各自的数据存储,若是微服务共享一个数据存储,会提升耦合,改动一个服务的数据结构,可能会致使牵动另外一个微服务的数据存储,应当避免直接访问其余微服务的数据存储,从另外一个服务提供的API来获取接口结果,服务之间存在隔离,即下降耦合.

能够依据不一样的微服务特色来选择不一样结构功能的数据存储,好比前置开发展现类型的服务,使用node开发,数据的类型不少,对事务要求不高,能够选择NoSQL的MongoDB存储; 搜索类型的服务,能够选择ElasticSearch存储; 对事务要求高的服务,能够考虑即时关系型数据库,最多见的MySql; 

数据划分考虑,设计API

不少时候,由于项目比较复杂,接口API提供的或多或少的数据都存在冗余或者缺省,好比都会有的user用户表,几乎全部服务都存在这么一个表,user表中有用户的基础信息,名字,手机,密码等等,如今user对外暴露接口,来了一个支付服务,支付服务访问user提供的API的时候,更关注user的开启关闭,是否被禁用,用户使用支付的方式等等,其余信息则不须要;来了一个快递服务,则更关注user的手机号,地址等等,其余也不须要;

有的时候,咱们须要获得user的数据,能够在其余服务数据存储中也存一份,好比冗余数据,那么须要保证另个服务冗余数据和原服务数据的一致性,否则一个user手机号换了,快递服务上一直没变,就找不到人了

 

--------------------------------------------------------------

相关文章
相关标签/搜索