首页 Tomcat教程开发语言,WEB架构介绍

WEB前端三大核心技术

Java介绍,基础入门

运维派是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai

开发语言

语言:人与人交流的沟通表达方式

计算机语言:人与计算机之间交互沟通的语言

语言分类

按照与自然语言的差异分类

  • 低级语言
    • 机器语言、汇编语言都是面向机器的语言,都是低级语言。不同机器是不能通用的,不同的机器需要不同的机器指令或者汇编程序
  • 高级语言
    • 接近自然语言和数学语言的计算机语言
常见语言
  • C语言
    • 面向过程编程,只有函数
    • 操作系统编程、单片机编程等领域
  • C++语言
    • 底层高性能开发
    • 面向对象,学习难度极大,目前标准发展有点乱
  • Java
    • WEB开发领域第一,延伸领域极多,库丰富
    • 大数据领域生态完整
  • Python
    • 入门门槛低,深入并不容易,非专业程序员容易接受,他们有丰富的专业知识,但计算机专业知识不够
    • Python简洁的语法,不需要让他们关注背后的细节,可以让他们较容易的掌握并开始编程
    • 运维开发
  • Javascript
    • 网景公司发明的动态脚本语言,前端开发第一语言
    • JavaScript才是目前前后端通吃的全栈语言
    • 前端执行的JS代码,需要从服务器端发送到浏览器端,在浏览器端使用JS引擎执行
  • Go
    • C语言之父Ken Thompson亲自参与设计
    • 静态编译型语言,但结合了动态解释性语言的特点,例如GC
    • 充分利用多核,适合高并发场景

WEB架构

web资源和访问
后端资源分类
  • 静态资源
    • 图片:一旦创建好,图片文件不再改变。图片数目多,占用磁盘空间多,一般使用单独的图片服务器
    • HTML、CSS、JavaScript:这些文本是文本的,前端工程师可以修改,但修改次数较少,一段时间都不变
  • 动态资源
    • 内容有后台程序动态生成,比如查询数据库,将查询结果生成为HTML

开发语言,WEB架构介绍插图

访问web的方式

PC端或移动端浏览器访问

从静态服务器请求HTML、CSS、JS等文件发送到浏览器端,浏览器端接收后渲染在浏览器上
从图片服务器请求图片资源显示
从业务服务器访问动态内容,动态内容是请求后有后台服务访问数据库后得到的,最终返回到浏览器端

WEB App访问
内置了HTML和JS文件,不需要从静态WEB服务器下载JS或HTML。为的就是减少文件的发送,现代前端开发使用的JS文件太多或太大了
有必要就从图片服务器请求图片,从业务服务器请求动态数据

客户需求多样,更多的内容还是需要由业务服务器提供,业务服务器往往都是由一组服务器组成。

后台应用架构
单体架构
  • 传统架构(单机系统),一个项目一个工程:比如商品、订单、交易、库存等等,统一部署,一个进程
  • Java实现:JSP、Servlet,打包成一个jar、war部署
  • web应用服务器:开源的tomcat、jetty、glassfish。商用的有weblogic、websphere、Jboss
微服务
  • 属于SOA(Service Oriented Architecture)的子集
  • 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底去掉耦合,每一个微服务提供单个业务功能,一个服务只做一件事。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等
  • 从技术角度讲就是一种小而独立的处理过程,类似与进程的概念,能够自行单独启动或销毁
  • 微服务架构(分布式系统),各个模块/服务,各自独立出来,“让专业的人干专业的事”,独立部署。分布式系统中,不同的服务可以使用各自独立的数据库。
  • 服务之间采用轻量级的通信机制(通常是基于HTTP的RESTful API)。
  • 微服务设计的思想改变了原有的企业研发团队组织架构。传统的研发组织架构是水平架构,前端、后端、DBA、测试分别有自己对应的团队,属于水平团队组织架构。而微服务的设计思想对团队的划分有着一定的影响,使得团队组织架构的划分更倾向于垂直架构,比如用户业务是一个团队来负责,支付业务是一个团队来负责。但实际上在企业中并不会把团队组织架构拆分得这么绝对,垂直架构只是一种理想的架构
  • 微服务的实现框架有多种,不同的应用架构,部署方式也有不同
单体架构和微服务比较

开发语言,WEB架构介绍插图(1)

开发语言,WEB架构介绍插图(2)

微服务的优缺点

微服务优点:

-每个服务足够内聚,足够小,代码容易理解。这样能聚焦一个只当的业务功能或业务需求。
-开发简单、开发效率提高,一个服务可能就是专业的只干一件事,微服务能够被小团队单独开发,这个小团队可以是2到5人的开发人员组成
-3.微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。

-微服务能使用不同的语言开发

-易于和第三方集成,微服务运行容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins、Hudson、Bamboo

-微服务易于被一个开发人员理解、修改和维护,这样小团队能够更关注自己的工作成果,无需通过合作才能体现价值

-微服务允许你利用融合最新技术。微服务只是业务逻辑的代码,不会和HTML/CSS或其他界面组件混合,即前后端分离

-每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一数据库

微服务缺点

-微服务把原有的一个项目拆分成多个独立工程,增加了开发、测试、运维、监控等的复杂度
-微服务架构需要保证不同服务之间的数据一致性,引入了分布式事务和异步补偿机制,为设计和开发带来一定挑战
-开发人员和运维需要处理分布式系统的复杂性,需要更强的技术能力
-微服务适用于复杂的大系统,对于小型应用使用微服务,进行盲目的拆分只会增加其维护和开发成本

常见的微服务框架

*Dubbo

  • 阿里开源贡献给了ASF,目前已经是Apache的顶级项目
  • 一款高性能的Java RPC服务框架,微服务生态体系中的一个重要组件
  • 将单体程序分解成多个功能服务模块,模块间使用Dubbo框架提供的高性能RPC通信
  • 内部协调使用Zookeeper,实现服务注册、服务发现。有服务治理

Spring cloud
一个完整的微服务解决方案,相当于Dubbo的超集

*微服务框架,将单体应用拆分为粒度更小的单一功能服务

*基于HTTP协议的REST(Representational State Transfer 表述性状态转移)风格实现模块间通信

本文链接:http://www.yunweipai.com/35096.html

WEB前端三大核心技术

Java介绍,基础入门

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2012-2020 YUNWEIPAI.COM - 运维派
扫二维码
扫二维码
返回顶部