• 中间件汇总——了解


    服务器集群——HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器,Redis的Proxy服务器,MySQL的Proxy服务器

    传统基于 Tomcat 等 Web 容器的垂直架构已经无法满足需求,需要拆分应用进行服务化,以提高开发和维护效率。从组网情况看,垂直的架构拆分之后,系统采用分布式部署,各个节点之间需要远程服务调用,高性能的 RPC 框架必不可少,Netty 作为异步高性能的通信框架,往往作为基础通信组件被这些 RPC 框架使用。

    --Dubbo 的 RPC 框架使用 Dubbo 协议进行节点间通信,Dubbo 协议默认使用 Netty 作为基础通信组件

    --消息中间件 RocketMQ 的消息生产者和消息消费者之间,也采用 Netty 进行高性能、异步通信

    --手游服务端、还是大型的网络游戏:TCP/UDP 和 HTTP 协议栈,非常方便定制和开发私有协议栈。账号登陆服务器、地图服务器之间可以方便的通过 Netty 进行高性能的通信

    --Hadoop 的高性能通信和序列化组件 Avro 的 RPC 框架

    --企业和 IT 集成需要 ESB,Netty 对多协议支持、私有协议定制的简洁性和高性能是 ESB RPC 框架的首选通信组件

    --通信行业:Netty 的异步高性能、高可靠性和高成熟度

    传统HTTP服务器原理

    统的HTTP服务器的原理

    1. 创建一个ServerSocket,监听并绑定一个端口
    2. 一系列客户端来请求这个端口
    3. 服务器使用Accept,获得一个来自客户端的Socket连接对象
    4. 启动一个新线程处理连接
      1. 读Socket,得到字节流
      2. 解码协议,得到Http请求对象
      3. 处理Http请求,得到一个结果,封装成一个HttpResponse对象
      4. 编码协议,将结果序列化字节流
      5. 写Socket,将字节流发给客户端
    5. 继续循环步骤3

    HTTP服务器之所以称为HTTP服务器,是因为编码解码协议是HTTP协议,如果协议是Redis协议,那它就成了Redis服务器,如果协议是WebSocket,那它就成了WebSocket服务器!

    Netty

    1)本质:JBoss做的一个Jar包

    2)目的:快速开发高性能、高可靠性的网络服务器和客户端程序

    3)优点:提供异步的、事件驱动的网络应用程序框架和工具

    ========NIO&&BIO

    NIO的全称是NoneBlocking IO,非阻塞IO,区别与BIO,BIO的全称是Blocking IO,阻塞IO。那这个阻塞是什么意思呢?

    1. Accept是阻塞的,只有新连接来了,Accept才会返回,主线程才能继
    2. Read是阻塞的,只有请求消息来了,Read才能返回,子线程才能继续处理
    3. Write是阻塞的,只有客户端把消息收了,Write才能返回,子线程才能继续读取下一个请求

    Jetty:基于Java网页服务器Java Servlet容器【HTTP服务器组件】

    使用范畴:

          MavenEclipsespark ActiveMQApache软件基金会所研发的开放源码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。

          Hadoop:

    • NameNode和JobTracker使用Jetty呈现管理页面。
    • TaskTracker使用Jetty接收来自JobTracker的映射(Map),减少并洗牌(Shuffle)操作。

    Redis:开源(BSD许可),内存存储的数据结构服务器【高速缓存

    持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区

    同类产品用途比较:

    Redis是可以做为数据库来使用的,它可以看做一个key/value型数据库,因为Redis会根据配置定时将内存中的数据写入到硬盘中,这样即便重启以后依然可以恢复,但是有几个缺点需要考虑一下:

    • Redis只能存储key/value类型,虽然value的类型可以有多种,但是对于关联性的记录查询,没有Oracle/Mysql方便。
    • Redis内存数据写入硬盘有一定的时间间隔,在这个间隔内数据可能会丢失,虽然后续会介绍各种模式来保证数据丢失的可能性,但是依然会有可能,所以对数据有严格要求的不建议使用Redis做为数据库。

    Ehcache

    • 是一个Java开源项目,使用的方式就是引入一个jar包,非常方便

    Memcached

    • 如果开启多线程模式,读取速度将有极大的提高
    • 数据只会存储在内存中,挂掉后数据不可恢复

    Redis

    • 数据结构非常丰富,字符串、hash列表、list、Set等等
    • 支持主从,Sentinal,分片等多种高级特性,用于负载均衡和容灾,具有高可用性
    • 几乎支持所有语言的客户端

    Redis

    • 只能说具备发布订阅功能,一个或多个消费者订阅一个频道

    Kafka

    • 高级特性一应俱全,集群、负载均衡、动态扩容、数据备份等

    Nginx:轻量级的Web服务器、反向代理服务器【异步框架的网页服务器

    -反向代理负载平衡器HTTP缓存

    -Nginx在官方测试的结果中,能够支持五万个并行连接,而在实际的运作中,可以支持二万至四万个并行连接  //

    • 核心模块:nginx 最基本最核心的服务,如进程管理、权限控制、日志记录;
    • 标准 HTTP 模块:nginx 服务器的标准 HTTP 功能;
    • 可选 HTTP 模块:处理特殊的 HTTP 请求
    • 邮件服务模块:邮件服务
    • 第三方模块:作为扩展,完成特殊功能

    JBOSS:缩短软件开发周期



    Hibernate:持久化引擎



    redis集群:多个Redis间节点间共享数据的程序集

    Redis 集群没有使用一致性hash, 而是引入了 哈希槽的概念.

    Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽,



    Docker:【环境配置】开放源代码软件,是一个开放平台,用于开发应用、交付应用、运行应用。 Docker允许用户将基础设施中的应用单独分割出来,形成更小的颗粒,从而提高交付软件的速度

    -Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离

    - Linux 容器的一种封装,提供简单易用的容器使用接口

    主要用途,目前有三大类。

    (1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。

    (2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。

    (3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

    软件把任务外包出去,让各种外部服务完成这些任务,软件本身只是底层服务的调度中心和组装层。

    wordPress:open source software you can use to create a beautiful website, blog, or app.



    ElasticSearch

  • 相关阅读:
    9.Java通过axis调用WebService
    8.AXIS1基础
    7.Web Service 调用天气代码
    Exception in thread "main" java.lang.NoClassDefFoundError: org.jaxen.NamespaceContext
    webservices 服务器未能识别 HTTP 头 SOAPAction 的值:.
    几种流行Webservice框架性能对比
    6. 使用Axis开发WebService程序
    5. webservice通信调用天气预报接口实例
    4.菜鸟教你一步一步开发 web service 之 axis 客户端创建
    3.菜鸟教你一步一步开发 web service 之 axis 服务端创建
  • 原文地址:https://www.cnblogs.com/macro-renzhansheng/p/13584798.html
Copyright © 2020-2023  润新知