首页>行业资讯>常用Web开发技术
永佳动态 行业资讯 永佳见解 常见问题

常用Web开发技术

更新时间:2020/11/25 10:16:08 作者:永佳软件

    1.Web前端开发技术
    React是Facebook公司推出的一套前端开发框架,是目前全世界最流行的前端框架。React是一个声明式,高效且灵活的用于构建用户界面的JavaScript库。使用React可以将一些简短、独立的代码片段组合成复杂的UI界面,这些代码片段被称作“组件”。它的核心理念是将网页应用看成一个组件构成的状态机(statemachine),状态的变化导致了UI的变化。
    React主要用于构建UI。创建拥有各自状态的组件,再由这些组件构成更加复杂的UI。可以在React里传递多种类型的参数,如声明代码,帮助你渲染出UI、也可以是静态的HTMLDOM元素、也可以传递动态变量、甚至是可交互的应用组件。
    React特点:
    1.声明式设计:React采用声明范式,可以轻松描述应用。
    2.高效:React通过对DOM的模拟,最大限度地减少与DOM的交互。
    3.组件化:组件逻辑使用JavaScript编写而非模版,因此你可以轻松地在应用中传递数据,并使得状态与DOM分离。
    4.灵活:React可以与已知的库或框架很好地配合。一次学习,随处编写,无论你现在正在使用什么技术栈,都可以随时引入React来开发新特性,而不需要重写现有代码。
    2.后端开发技术
    2.1Nginx
    Nginx是一款轻量级的,开源的,高性能的HTTP服务器和反向代理服务器,同时也提供了电子邮件IMAP/POP3/SMTP服务。以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。
    Nginx的并发处理能力:并发连接数,一般优化后,峰值能保持在1~3w左右。内存和CPU核心数不同,会有进一步优化空间。
    其特点是占有内存少,并发能力强。事实上Nginx的并发能力在同类型的网页服务器中表现较好。中国大陆使用Nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
    Nginx是一个Web服务器,也可以用作负载均衡器和HTTP缓存。
    下面介绍Nginx几个功能特性。
    2.1.1反向代理
    什么是反向代理?比如用户去访问百度,用户在浏览器输入www.baidu.com时,对于百度来说,浏览器就是客户端。客户端将请求发送到百度的代理服务器,由代理服务器去选择目标服务器获取数据后,在返回给客户端。
    这样做有三个好处:
    1、隐藏了目标服务器IP地址,暴露出去的只是代理服务器
    2、访问量很大的时候可以轻松扩容,目标服务器可以有很多个
    3、客户端对代理是无感知的,客户端不需要任何配置就可以访问
    反向代理(ReverseProxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
    2.1.2静态资源WEB服务
    Nginx作为静态资源web服务时,通过接收客户端的静态资源请求,然后到静态文件存储位置获取对应的资源并返回给客户端,流程如下图所示:
    1.静态资源类型
    非服务器动态运行生成的文件,换句话说,就是可以直接在服务器上找到对应文件的请求。
    浏览器端渲染:HTM,CSS,JS
    图片:JPEG,GIF,PNG
    视频:FLV,MPEG
    文件:TXT,任意下载文件
    2.静态资源服务场景CDN
    在北京的用户请求的资源在北京时,速度会非常快。但是并不是所有资源都放在北京,可能有一天要请求的静态资源放在上海,这个时候,CDN的作用就来了。如果发现在北京的CDN缓存服务器上没有资源,就会向资源存储中心请求上海的资源,然后根据配置策略缓存在北京,Nginx可以完成这项任务。
    2.1.3负载均衡
    当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。
    我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。
    Nginx是一种流行的Web服务器软件,可以配置为简单但功能强大的负载均衡器,以提高服务器资源的可用性和效率。在负载均衡配置中,Nginx充当在多个单独服务器上工作的分布式Web应用程序的单个入口点。
    Nginx负载均衡策略:
    1.轮询
    轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除。
    2.权重
    指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能。
    3.IPHash
    每个请求都根据访问IP的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务。
    4.最少连接
    将请求分配到连接数最少的服务上。
    5.Fair
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。
    2.2Elasticsearch
    Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch作为一款功能强大的分布式搜索引擎,支持近实时的存储、搜索数据。
    Elasticsearch本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个Elastic实例。
    单个Elasticsearch实例称为一个节点(node)。一组节点构成一个集群(cluster)。
    Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
    Elasticsearch可以被下面这样准确地形容:
    1.一个分布式的实时文档存储,每个字段可以被索引与搜索;
    2.一个分布式实时分析搜索引擎;
    3.能胜任上百个服务节点的扩展,并支持PB级别的结构化或者非结构化数据。
    由于Elasticsearch的功能强大和使用简单,维基百科、卫报、StackOverflow、GitHub等都纷纷采用它来做搜索。现在,Elasticsearch已成为全文搜索领域的主流软件之一。
    Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式,比如下面这条用户数据:
    {
    ""name"":""John"",
    ""sex"":""Male"",
    ""age"":25,
    ""birthDate"":""1990/05/01"",
    ""about"":""Ilovetogorockclimbing"",
    ""interests"":[""sports"",""music""]
    }
    Elasticsearch能解决的问题:
    2.3微服务
    微服务架构:将单体应用拆分为多个高内聚低耦合的小型服务,每个小服务运行在独立进程,由不同的团队开发和维护,服务间采用轻量级通信机制,独立自动部署,可以采用不同的语言及存储。
    单体架构整个团队维护开发一个大工程及一个单库,到了微服务架构,用户请求经过APIGateway被路由到下游服务,服务之间以轻量级通信协议进行通信,服务通过注册中心发现彼此,每个服务都有专门的开发维护团队,每个服务对应独立的数据库,服务独立开发,独立部署和上线。
    2.3.1微服务优点
    1、易于开发与维护
    微服务相对小,易于理解;启动时间短,开发效率高。
    2、独立部署
    一个微服务的修改不需要协调其它服务。
    3、伸缩性强
    每个服务都可以在横向和纵向上扩展;每个服务都可按硬件资源的需求进行独立扩容。
    4、与组织结构相匹配
    微服务架构可以更好将架构和组织相匹配;每个团队独立负责某些服务,获得更高的生产力。
    5、技术异构性
    使用最适合该服务的技术;降低尝试新技术的成本。
    2.3.3微服务框架
    目前国内企业使用的微服务框架主要是SpringCloud和Dubbo(或者DubboX),SpringCloud已经逐渐成为主流。SpringCloud从设计之初就考虑了绝大多数互联网公司架构演化所需的功能,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。SpringCloud全家桶提供了各种各样的组件,基本可以覆盖微服务的服务治理的方方面面,以下列出了SpringCloud一些常用组件:
    1、服务注册与发现Eureka
    Eureka是Netflix开源的一款提供服务注册和发现的产品,Eureka就是一个服务中心,将所有的可以提供的服务都注册到它这里来管理,其它各调用者需要的时候去注册中心获取,然后再进行调用,避免了服务之间的直接调用,方便后续的水平扩展、故障转移等。如下图:
    2、配置中心Config
    Config是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,其实就是Server端将所有的配置文件服务化,需要配置文件的服务实例去ConfigServer获取对应的数据。将所有的配置文件统一整理,避免了配置文件碎片化。
    3、服务网关
    在微服务架构模式下,后端服务的实例数一般是动态的,对于客户端而言很难发现动态改变的服务实例的访问地址信息。因此在基于微服务的项目中为了简化前端的调用逻辑,通常会引入APIGateway作为轻量级网关,同时APIGateway中也会实现相关的认证逻辑从而简化内部服务之间相互调用的复杂度。
    SpringCloud体系中支持APIGateway落地的技术就是Zuul。SpringCloudZuul路由是微服务架构中不可或缺的一部分,提供动态路由,监控,弹性,安全等的边缘服务。Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器。它的具体作用就是服务转发,接收并转发所有内外部的客户端调用。使用Zuul可以作为资源的统一访问入口,同时也可以在网关做一些权限校验等类似的功能。