1. 扩展示意图和标准示意图的差别就是微服务下面可以挂子服务。

    强化模式框架.jpg

    2. 重要概念

    a. 网关服务器
    一个体系有若干个微服务,每个服务都有自己的网址、端口。 对于调用方而言,要记住所有的网址、端口显然很不科学。

    由此引入了【 网关】 的概念。 网关有独立的IP+ 端口。

    前端网站, 只管访问网关url 地址即可。 网关再负责将请求转发给相应服务器。

    由此可见,网关扮演的是【门卫】的角色。
    门卫则有几个职责: 负责查看请求方是谁?是否我认识? 是合理合法的请求方么?
    负责依据请求信息,转发给不同的职能部门。
    负责反馈执行结果。

    查看请求方是是否合理合法,由此引入了第二个概念[白名单]

    b. 白名单
    所谓白名单,就是网页端,或者你本机的浏览器端, 发http://a.b.c.d:3432/Show 等API请求时,
    网关首先判断, a.b.c.d:3432 这个地址是否在我预设的白名单中?
    在则说明你可信,传达给业务服务做后续事项。
    不在则直接拒收了。

    白名单机制是授权认证安全体系的第一道防线, 也是颗粒度最大的防线。 就依据发送方的IP/端口一票否决。

    设想一个场景:
    倘若有非法分子,抓包克隆了你的前端网站, 然后诱使客户打开了对应网站。 倘若没有白名单机制,稍不当心操作者在不知情的情况下,就被窃取了重要信息。

    你的前端网站,在网关的白名单里,可以正常发请求。
    被克隆的网站,虽然样子完全一样,但因为不在白名单里,只能是一个普通网站而已。


    c. 子服务
    子服务是我们特有的概念。 子服务就是将几个同类服务聚合在一起,由一个服务当主服务(拥有IP+端口),其他服务挂靠在主服务上,共同同一个端口。

    子服务一般都比较微小,大量模块借重于主服务。
    因此子服务极大的方便了平台部署和维护。

    可以这么理解:
    【网关】: 首都。 拥有唯一的IP/端口。 所有交互都先要经过网关。
    【微服务】: 省会。 拥有自己独立的IP/端口。 不强制设置的话,前端可以绕过首都直接和省会沟通。
    【子服务】: 下辖城市。 没有自己的IP/端口。 挂在相应微服务下。最轻量级。但也能很轻易的升格为省会。

    ** d. 环境模式(Environmental)
    业务体系的构建生命周期中,一般有三个阶段: 开发阶段、维护阶段、正式阶段。

    环境模式就是负责描述你的平台,当前是在那个阶段?

    比如说,开发和测试阶段,前端需要大量的和后端做调试交互, 此时就不希望【白名单】限制交互。

    比如:开发测试阶段,希望后端输出的Log.txt能尽可能详细等。

    而正式阶段,白名单、权限认证等各项机制,都得从严。

    如何区分,就是靠一个全局的理念[环境模式]。

    e. 配置中心**
    一个稍微大点的体系,通常都下辖 [网关、登录、授权认证、附件、流程、通知消息、队列】等标准服务, 以及若干针对业务场景的特殊服务。

    标准模式下,每个服务都有自己独立的 IP+端口, 对应各自的数据库连接等配置。
    而且不同的服务, 配置信息也有差异。 比如流程体系的配置、附件的配置、通知体系的短信、微信、邮件等配置,都各不相同。

    另外从时间维度上看,有些配置信息必须在网站启动前配置,比如IP地址、数据库连接。

    配置中心的作用就是负责统一配置所有的信息。

    网站启动前配置:
    网关网址,RPC端口, Redis端口、白名单。
    各服务网站 服务名, 网址+端口。 数据库连接等。

    网站启动后配置:
    比如: 通知服务: 邮件服务器、微信注册号等。
    附件服务: FTP网址等。