zoukankan      html  css  js  c++  java
  • 微服务思想

    1 微服务思想

    服务运行在自己的进程中,是一个小而独立的服务单元

    使用轻量级通信机制,通常是http api

    能够自动化独立部署

    最低限度的集中式管理

    2 单体架构的弊端

    一个单体架构,就是一个架构中包含所有功能,当业务规模小的时候运行ok,但业务变庞大后,就会出现很多麻烦,

    模块不清晰,彼此之间界限模糊,整个架构复杂

    技术负债高,新接手的人员不容易明白各种细节,各种坑。

    架构扩展难,由于单个服务不是独立的,需要整个单体架构联动调整,高耦合带来扩展难。

    3 微服务优势

    服务独立性:假设在后端体系上,分为路由转发层-主体业务层-后端调用模块层-数据缓存层-数据储存层。每个后端模块都相当于一个独立的项目,如果要加一个模块,只要部署一个进程就行。

    层次清晰:假设还是上面的体系,不同的层次在不同的服务器上。

    弹性调整:主体业务层是cpu/mem密集型,数据缓存层是mem密集型,数据储存层是磁盘io密集型,就可以针对性硬件调整。

    松耦合:一大堆微服务组成整个分布式架构,微服务之间是彼此调用的关系,微服务可以独立部署,下线,升级等,对其他微服务影响降到最低。

    轻量级启停:由于彼此之间的相对独立性,可以对一个进程进行启停操作,不用重启整个架构。

    轻量级通信:微服务都是进程的形式,然后监听tcp端口,彼此之间通过套接字连接。

    4 设计原则

    单一职责:一个微服务的粒度应该是一个子功能,处理一种业务功能,不考虑其他的业务功能。

    服务自治:一个微服务1-2个人就可以完成从开发,接入,测试,上线,维护整个流程。是一个独立的项目。

    接口统一:微服务之间都是通过接口调用来联动的,所以要有明确的接口规范。

    5 服务发现

    在微服务架构中,每个服务必然会有多个进程,作为拷贝在运行,甚至运行在不同的服务器上,提供负载均衡功能和防止单点故障。微服务之间需要有一套可靠的发现机制,某个微服务的其中一个进程up/down时,可以被调用者感知。ZK提供了这样的功能,每个微服务启动时,会向ZK注册临时节点,当ZK在超时时间外无法连同微服务,就删除临时节点。调用者会根据ZK信息寻址到被调用者,如果发现被调用者在ZK中没有节点,则换一个。

    6 分布式的不可靠性

    启停和发现都要经过ZK,具有不可靠性。

  • 相关阅读:
    JSTL和EL
    SpringMVC 上传文件and过滤器
    SQLServer 大数据查询2
    SQLServer 大数据查询分析
    Oracle分页查询
    Oracle大数据常见优化查询
    Window 下面利用Oid 获取SNMP主机信息 以及计算方法
    window 下面安装net-snmp 简单网关协议
    显示一行省略文字的详细信息
    手机自动隐藏浏览器地址栏
  • 原文地址:https://www.cnblogs.com/jabbok/p/9459314.html
Copyright © 2011-2022 走看看