最近几年出现的新技术

■前言

只能算是比较新而已,是最近这几年间出现的。

起码在我刚毕业,2010年的时候,完全没有听说过!

-----------------

・大数据时代到来
1.NoSQL
4.反向代理服务器

・DevOps 产品快速上线
2.Docker
3.Jenkins
5.SFDC 等产品

-----------------

1.NoSQL

个人的理解是,当处理大量数据访问时,传统的关系性数据库已经无法满足我们的需求,

比如淘宝的双十一,为了解决这样类似的问题,于是出现了NoSQL

NoSQL数据库在存储速度与灵活性方面有优势,也常用于缓存。
代表:Redis、Mongodb、Elasticsearch

NoSQL是非关系型数据库,有以下特点
1、使用键值对存储数据;
2、分布式;
3、一般不支持ACID特性;
4、非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

1.1、什么是 Redis?
Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
(1)Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
(2)Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
(3)Redis 支持数据的备份,即 master-slave 模式的数据备份。
Redis 优势
(1)性能极高 – Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s 。
(2)丰富的数据类型 – Redis 支持二进制案例的 Strings, Lists, Hashes, Sets 及Ordered Sets 数据类型操作。
(3)原子 – Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过 MULTI 和 EXEC指令包起来。
(4)丰富的特性 – Redis 还支持 publish/subscribe, 通知, key 过期等等特性。

Redis 与其他 key-value 存储有什么不同?
(1)Redis 有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis 的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
(2)Redis 运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,
         因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,
         在内存中操作起来非常简单,这样 Redis可以做很多内部复杂性很强的事情。
         同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

1.2.Elasticsearch

https://blog.csdn.net/zzh920625/article/details/80869130

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

DevOps

并非一种新的技术,而是一种理念

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。

以下的两种技术(No.2,3),都是为了服务员DevOps

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

2.Docker

问:为什么会出现Docker

回答:因为部署太费事了!

--------------------------------------

运行环境要安装各种服务(JDK、Tomca、WebSphere、MySQL、Oracle、DB2等等)
不同版本的运行环境,以及环境自身的升级
不同版本的各种服务,以及服务的升级
升级后,运行环境与服务之间的兼容性
换一台机器,就要重来一次

--------------------------------------

2.1.Docker理念:
Docker是基于Go语言实现的云开源项目。
Docker的主要目标是**“Build,Ship and Run Any App;Anywhere",
也即是通过对应用组件的封装,分发,部署,运行等生命周期的管理,
使得用户的APP(也可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。
Linux容器技术的出现就解决了这样的一个问题,而Docker就是在它的基础上发展过来的。
将应用运行在Docker容器上面,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。
只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

2.2.什么是Docker:
解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

一次构建,到处运行。

2.3.Docker的前世今生:
之前的虚拟机技术
虚拟机就是带环境安装的一种解决方案
它可以在一种操作系统里面运行另一种操作系统,比如在Windows系统里面运行Linux系统。
应用程序对此毫无感知,因此虚拟机看上去跟真实系统一模一样,而对于底层系统来说,
虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,
能够使应用程序、操作系统和硬件三者之间的逻辑不变。
从而达到,一次构建,到处运行。

2.4.虚拟机的缺点:
1.资源占用多
2.冗余步骤多
3.启动慢

2.5.容器虚拟化技术:
由于之前虚拟机存在的缺点,Linux发展出了另一种虚拟化技术:Linux容器(Linux Containers,缩写LXC)。
Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变的高效轻量并保证部署在任何环境中的软件都能始终如一的运行

2.6.与传统虚拟机的不同:
1.传统虚拟机技术是模拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。
2.而容器内的应用程序直接运行于宿主的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
3.每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。

--------------------------------------------------------------------
2.7.Docker的基本组成(镜像,容器,仓库)

镜像
Docker镜像(Image)就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器

容器
Docker利用容器(Container)独立运行有一个或一组应用。容器是用镜像创建的运行实例。
它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做一个简易版的Linux环境(包括root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

仓库
仓库(Repository)是集中存放镜像文件的场所
仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库又包含多个镜像,每个镜像有不同的标签(tag)
仓库分为公开仓库(Public)和私有仓库(Private)两种形式
最大的公开仓库是 Docker hub(https://hub.docker.com/)
存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里、网易云等

--------------------------------------------------------------------

2.8.Docker 安装:

查看自己的内核
uname -r命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)

https://blog.csdn.net/ruozhuliufeng/article/details/103767478

--------------------------------------------------------------------

3.Jenkins

3.1.自动发布:

写好脚本后,达到一键部署的效果。

让系统发布变得更加简单。

对于敏捷开发非常有效果,我们敏捷开发时,有时,每周都有Sprint会议,

所以经常要发布最新代码到最新环境,确认效果。

指定一个参数,这个参数是,Maven的POM文件中的一个参数,

通过这个参数,可以发布不同的IT环境,以及ST等环境。

(不同环境,使用的Server,数据库,Log4j等都是不一样的,这些在POM中指定。)

(里面用到了Manvn想管的知识)

还有,启动Maven打包,打包后文件的移动,删除等待

(里面用到了LInux Shell相关的知识)

(而且敏捷宣言中提到【可工作软件 高于详尽的文档】)

使用Jenkins往IT环境部署,一键就可以部署,非常便捷!

3.2.自动检查代码缺陷:

SonarQube (比如,可以查看出,代码某处,存在发生空指针异常的风险)

3.3.非常好的版本管理:

可以查看每一次发布提交的代码内容

--------------------------------------------------------------------

4.反向代理服务器

把软件部署到多个服务器上,使用反向代理服务器,来达到负载均衡。

问:什么要把软件部署到多个服务器上

回答:当大量访问到来时,如果只有一个服务器,新能再好,也很难承受。

以上图片来自下面4.2中的链接,更详细的介绍,可以去看下面链接提供的文章。

4.1.反向代理服务器介绍

https://blog.csdn.net/sxzlc/article/details/103449412

4.2.分布式系统介绍

https://blog.csdn.net/weixin_44460333/article/details/103231535

https://www.jianshu.com/p/73613376b854

4.3.反向代理中的Session拷贝 (下面文章中的No.12)

https://blog.csdn.net/sxzlc/article/details/103450258

--------------------------------------------------------------------

5.SFDC 等产品(自带数据库服务)

 使用这类框架开发之后,可以很快开发出产品并上线

・不必再担心环境的部署,服务器的准备,数据的存储。

・只要专注于产品业务的实现即可、

这类产品提供了很好的框架,便于开发,提高开发速度

・数据的存储,是开发这类产品的公司为你管理。。。。

不过,个人认为,这类产品未来不一定能火起来,毕竟现在是大数据时代,// 2020 / 01 / 05 留言

用户的数据,对公司来说是宝贵的资源,

就算是搭建服务器保存数据,维护起来麻烦,费钱,

但是,用户数据还是保存在自己手里最好!

--------------------------------------------------------------------

 

■其他相关

--------------------------------------------------------------------

・分布式
系统中的多个模块在不同服务器上部署,即可称为分布式系统,
如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上。

・高可用
系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性

・集群
一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务,这个整体称为集群。
如Zookeeper中的Master和Slave分别部署在多台服务器上,共同组成一个整体提供集中配置服务。
在常见的集群中,客户端往往能够连接任意一个节点获得服务,
并且当集群中一个节点掉线时,其他节点往往能够自动的接替它继续提供服务,
这时候说明集群具有高可用性

Zookeeper(ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务)

https://blog.csdn.net/java_66666/article/details/81015302

・负载均衡
请求发送到系统时,通过某些方式把请求均匀分发到多个节点上,
使系统中每个节点能够均匀的处理请求负载,则可认为系统是负载均衡的

・正向代理和反向代理
系统内部要访问外部网络时,统一通过一个代理服务器把请求转发出去,
在外部网络看来就是代理服务器发起的访问,此时代理服务器实现的是正向代理;
当外部请求进入系统时,代理服务器把该请求转发到系统中的某台服务器上,
对外部请求来说,与之交互的只有代理服务器,此时代理服务器实现的是反向代理。
简单来说,正向代理是代理服务器代替系统内部来访问外部网络的过程,
反向代理是外部请求访问系统时通过代理服务器转发到内部服务器的过程。

--------------------------------------------------------------------

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值