JavaEE与云服务知识概括

205 阅读1小时+

@TOC

文件、块、对象存储

存储简介:

  • 根据不同的分类形式,存储也会被分为不同的类型,但用途是一致的:存储的最终目的是存放数据。
  • 对于这种第三方存储,我们也可以叫他中介库。
  • 存储的分类有很多种形式: ①本地存储外置存储: <1>本地存储:就是使用内存或者硬盘进行存储。 <2>外置存储:就是会用U盘或移动硬盘进行存储。 ②DAS(Direct Attach STorage)SAN(Storage Area Network)NAS(Network Attached Storage): <1>DAS:是直接连接于主机服务器的一种储存方式,每一台主机服务器有独立的储存设备,每台主机服务器的储存设备无法互通,需要跨主机存取资料时,必须经过相对复杂的设定,若主机服务器分属不同的操作系统,要存取彼此的资料,更是复杂,有些系统甚至不能存取。通常用在单一网络环境下且数据交换量不大,性能要求不高的环境下,可以说是一种应用较为早的技术实现。 <2>SAN:是一种用高速(光纤)网络联接专业主机服务器的一种储存方式,此系统会位于主机群的后端,它使用高速I/O 联结方式, 如 SCSI, ESCON 及 Fibre- Channels。一般而言,SAN应用在对网络速度要求高、对数据的可靠性和安全性要求高、对数据共享的性能要求高的应用环境中,特点是代价高,性能好。例如电信、银行的大数据量关键应用。它采用SCSI 块I/O的命令集,通过在磁盘或FC(Fiber Channel)级的数据访问提供高性能的随机I/O和数据吞吐率,它具有高带宽、低延迟的优势,在高性能计算中占有一席之地,但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统。 <3>NAS:NAS(Network Attached Storage):是一套网络储存设备,通常是直接连在网络上并提供资料存取服务,一套 NAS 储存设备就如同一个提供数据文件服务的系统,特点是性价比高。例如教育、政府、企业等数据存储应用。它采用NFS或CIFS命令集访问数据,以文件为传输协议,通过TCP/IP实现网络化存储,可扩展性好、价格便宜、用户易管理,如目前在集群计算中应用较多的NFS文件系统,但由于NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。 ③块存储文件存储对象存储 <1>块存储:是块设备,一切磁盘形式存在的存储都是块设备,即块存储。 1、块存储强调裸磁盘。 2、所有以磁盘形式直接提供给主机的或服务器访问的存储都是块存储。 3、块存储使用时文件系统在客户端。 <2>文件存储文件存储的存储端多了一层文件系统,通过文件系统的调度后再对外提供存储资源。 1、文件存储易于共享。 2、块存储加文件系统打包后对外提供存储服务(NAS)。 <3>对象存储:是一种全新的存储架构,综合了块存储和文件存储的优点。 1、特点:速度快,易于共享扩展性强。 2、文件存储是以传统的目录架构存储的而对象存储是二层结构的文件系统。
  • 注意: ①一般来说SAN和DAS形式存储的都是用块存储。而文件存储和对象存储一般都是NAS形式。

DAS、NAS、SAN三种技术的比较和分析:

  • 针对Linux集群对存储系统高性能和数据共享的需求,国际上已开始研究全新的存储架构和新型文件系统,希望能有效结合SAN和NAS系统的优点,支持直接访问磁盘以提高性能,通过共享的文件和元数据以简化管理,
  • 目前对象存储系统已成为Linux集群系统高性能存储系统的研究热点,如Panasas公司的Object Base Storage Cluster System系统和Cluster File Systems公司的Lustre等。 在这里插入图片描述

对象存储服务OSS:

  • 无论是基于C/S架构(部分资源在本地),还是B/S架构(全部资源在服务器)的应用,都要面临一个文件存储的问题。
  • 对于文件存储最常见的有两种解决方案: ①直接存储到应用服务器的本地中: <1>存储到服务器本地,小的应用程序,是没有什么问题的。 <2>但是如果文件多了,大了,本地存储的速率、安全性都受到极大的挑战。I/O吞吐会让系统不堪重负。 ②处理后直接存入到数据库中: <1>存储到数据库中,数量少的时候,还能解决一点问题,同样的对于大数据量,是灾难性的。
  • 新的解决方案:OBS对象存储,让海量小文件存储变得轻而易举。存储速度上很有保障,同时对于数据的备份和安全,云产品都有比较完美的考虑。价格也是白菜价,可谓物美价廉。现在已经成为团队内部的备选组件。 ①对象存储同兼具SAN高速直接访问磁盘特点及NAS的分布式共享特点。 ②核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(Object-based Storage Device,OSD)构建存储系统,每个对象存储设备具有一定的智能,能够自动管理其上的数据分布。
  • 代码的接口方法,也比较简单,直接根据SDK接入即可。
  • 主要用来解决如下的几种业务场景: ①小图片的存储。APP开发过程中,小图片的上传和展示频率很高。编辑器(例如UEditor)中的图片存储,此处需要单独书写点代码,完成存储工作。

OSS使用中的基本概念:

  • Bucket(存储空间): ①Bucket是用户用来管理所存储0bject的存储空间。每个用户可以拥有多个Bucket。Bucket的名称在0SS的范围内必须是全局唯一的,一旦创建之后无法修改名称。Bucket内部的Object数目是没有限制的。 ②Bucket对于用户来说是一个管理Object的单元,所有的Object都必须隶属于某个Bucket。Bucket有一些属性用来控制Region、0bject的访问控制、Object的生命周期等,这些属性是作用在该Bucket下所有的Object上的,因此用户可以灵活创建不同的Bucket来完成不同的管理功能。 ③Bucket命名规范: <1>只能包括小写字母,数字和短横线(-) <2>必须以小写字母或者数字开头 <3>长度必须在3-63字节之间
  • Object(对象,文件): ①Object是OSS存储数据的基本单元,称为OSS的对象,也被称为OSS的文件。 ②Object命名规范: <1>使用UTF-8编码 <2>长度必须在1-1023字节之间 <3>不能以“/”或者“”字符开头 <4>注意:Object的名字是大小写敏感的
  • Region (区域): ①Region表示OSS的数据中心所在的区域,物理位置。用户可以根据费用、请求来源等综合选择数据存储的Region。一般来说,距离用户更近的Region访问速度更快。目前已经开通的Region有杭州,上海,深圳,北京,青岛,香港,美国,新加坡。 ②Region是在创建Bucket的时候指定的,一旦指定之后就不允许更改,该Bucket下所有的0bject都存储在对应的数据中心,目前不支持Object级别的Region设置。
  • Endpoint(访问域名): ①Endpoint表示OSS对外服务的访问域名。 OSS以HTTP REST API的形式对外提供服务,当访问不同的Region的时候,需要不同的域名。通过内网和外网访问同一个Region所需要的Endpoint也是不同的。
  • AccessKey(访问密钥): ①AccessKey,简称AK,指的是访问身份验证中用到的Accesskeyld和AccessKeySecret. OSSitt aAccessKeyIdHAccessKeySecretxf FKIU密的方法来验证某个请求的发送者身份。 ②AccesskeyId用于标示用户,AccessKeySecret是用户用于加密签名字符串和0SS用来验证签名字符串的密钥,其中AccesskeySecret必须保密。

通过API/SDK上传文件:

  • 概述:用户可遍历所有需上传的文件,通过API/SDK中的PutObjectPostObjectMultipartUpload三个接口完成上传操作。
  • 区别: ①PutObject:是可用于服务器端上传不易太大的文件;Post0bject适合于通过html表单直接上传文件到bucket,不经过用户的应用服务器:MultipartUpload支持断点上传,适合于网络质量较差或者文件大小较大的情况下的上传。
  • 优缺点: ①优点:适用场景广泛、使用灵活: ②缺点:操作复杂、速度较慢。
  • 步骤: ①打开OSS网站的帮助与文档,点击SDK开发包下载,点击JAVA/SDK开发包下载。 ②导入JAVA/SDK开发包中的JAR包。 ③编写方法 ④PutObject注意事项: <1>用户在metaData中指定Content-MD5请求头,0SS会计算body的Content-MD5并检查一致性: <2>如果Head中没有加入Content length参数,会返回411 Length Required错误: <3>ID/KEY/ENDPOINT设置有误会报403,错误码:AccessDenied。
public class OSSObjectSample{
	//访问id	
	private static final String ACCESS_ID ="your access key id";
	//访问密钥
	private static final String ACCESS_KEY ="your access key secret";
	//访问地址
	private static final String Endpoint="http://oss-cn-guangzhou.aliyuncs.com";
	
	public static void main(String[] args) throws Exception{
		//桶地址
		String bucketName = "bucketName";
		//桶上的对象地址
		String key = "aliyuntest/photo1.jpg";
		//本地文件地址
		String fileName= "d:/temp/photo1.jpg";

		//OSS客户端
		OSSClient client = new OSSClient(ACCESS_ID,ACCESS_KEY,Endpoint);
		//文件形式
		File file = new File(fileName);
		
		//对象元数据
		ObjecMetadata objectMeta = new ObjecMetadata ();
		objectMeta.setContentLength(file.length());
		objectMeta.setContentType("image.jpeg");
		//流形式
		InputStream input = new FileInputStream(file);
		//方式一:流形式
		client.putObject(bucketName,key,input,objectMeta);
		//方式二:文件形式
		client.putObject(bucketName,key,new File(fileName));
		
}

通过API/SDK拷贝文件:

  • 概述:将同一数据中心的bucket上的数据进行迁移可使用CopyObject和 UploadPartCopy .
  • 区别: ①如果是1GB以下文件采用CopyObject (超过该大小会返回400和错误提示:EntityToolarge)。 ②超过该大小的则使用UploadPartCopy
  • 优缺点: ①优点:速度较快; ②缺点:操作复杂;
  • 注意:通过OSSCMD可方便实现。

对象存储结构组成部分:

  • 对象 ①对象是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性信息(Meta Data)的组合,这些属性信息可以定义基于文件的RAID参数、数据分布和服务质量等,而传统的存储系统中用文件或块作为基本的存储单位,在块存储系统中还需要始终追踪系统中每个块的属性,对象通过与存储系统通信维护自己的属性。在存储设备中,所有对象都有一个对象标识,通过对象标识OSD命令访问该对象。通常有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各种属性,组对象是存储设备上共享资源管理策略的对象集合等。
  • 对象存储设备:对象存储设备具有一定的智能,它有自己的CPU、内存、网络和磁盘系统,OSD同块设备的不同不在于存储介质,而在于两者提供的访问接口。OSD的主要功能包括数据存储和安全访问。目前国际上通常采用刀片式结构实现对象存储设备。OSD提供三个主要功能: ①数据存储。OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD不提供块接口访问方式,Client请求数据时用对象ID、偏移进行数据读写。 ②智能分布。OSD用其自身的CPU和内存优化数据分布,并支持数据的预取。由于OSD可以智能地支持对象的预取,从而可以优化磁盘的性能。 ③每个对象元数据的管理。OSD管理存储在其上对象的元数据,该元数据与传统的inode元数据相似,通常包括对象的数据块和对象的长度。而在传统的NAS系统中,这些元数据是由文件服务器维护的,对象存储架构将系统中主要的元数据管理工作由OSD来完成,降低了Client的开销。
  • 元数据服务器(Metadata Server,MDS):MDS控制Client与OSD对象的交互,主要提供以下几个功能: ① 对象存储访问。MDS构造、管理描述每个文件分布的视图,允许Client直接访问对象。MDS为Client提供访问该文件所含对象的能力,OSD在接收到每个请求时将先验证该能力,然后才可以访问。 ②文件和目录访问管理。MDS在存储系统上构建一个文件结构,包括限额控制、目录和文件的创建和删除、访问控制等。 ③Client Cache一致性。为了提高Client性能,在对象存储系统设计时通常支持Client方的Cache。由于引入Client方的Cache,带来了Cache一致性问题,MDS支持基于Client的文件Cache,当Cache的文件发生改变时,将通知Client刷新Cache,从而防止Cache不一致引发的问题。
  • 对象存储系统的客户端Client:为了有效支持Client支持访问OSD上的对象,需要在计算节点实现对象存储系统的Client,通常提供POSIX文件系统接口,允许应用程序像执行标准的文件系统操作一样。

IaaS、SaaS 和 PaaS

IaaS、SaaS 和 PaaS简介:

  • SaaS、PaaS、IaaS简单的说都属于云计算服务,也就是云计算+服务。
  • 云计算就是一种按照需求通过Internet获取计算资源的形态。这些计算资源被包装成为服务,提供给用户。而提供这些服务的主体,我们称之为云服务供应商(Cloud Service Provider)。

IaaS(Infrastructure as a service – 基础设施即服务):

  • 用户可以在云服务提供商提供的基础设施上部署和运行任何软件,包括操作系统和应用软件。
  • 用户没有权限管理和访问底层的基础设施,如服务器、交换机、硬盘等,但是有权管理操作系统、存储内容,可以安装管理应用程序,甚至是有权管理网络组件。
  • 简单的说用户使用IaaS,有权管理操作系统之上的一切功能。
  • 我们常见的IaaS服务有虚拟机、虚拟网络、以及存储。

PaaS(Platform as a service – 平台即服务):

  • PaaS给用户提供的能力是使用由云服务提供商支持的编程语言、库、服务以及开发工具来创建、开发应用程序并部署在相关的基础设施上。
  • 用户无需管理底层的基础设施,包括网络、服务器,操作系统或者存储。他们只能控制部署在基础设施中操作系统上的应用程序,配置应用程序所托管的环境的可配置参数。
  • 常见的PaaS服务有数据库服务、web应用以及容器服务。
  • 成熟的PaaS服务会简化开发人员,提供完备的PC端和移动端软件开发套件(SDK),拥有丰富的开发环境(Inteli、Eclipse、VS等),完全可托管的数据库服务,可配置式的应用程序构建,支持多语言的开发,面向应用市场。

SaaS(Software as a Service – 软件即服务):

  • SaaS给用户提供的能力是使用在云基础架构上运行的云服务提供商的应用程序。可以通过轻量的客户端接口(诸如web浏览器(例如,基于web的电子邮件))或程序接口从各种客户端设备访问应用程序。
  • 用户无需管理或控制底层云基础架构,包括网络,服务器,操作系统,存储甚至单独的应用程序功能,可能的例外是有限的用户特定应用程序配置设置。
  • 类似的服务有:各类的网盘(Dropbox、百度网盘等),JIRA,GitLab等服务。而这些应用的提供者不仅仅是云服务提供商,还有众多的第三方提供商(ISV: independent software provider)。

简单来说:

  • 如果你是一个网站站长,想要建立一个网站。不采用云服务,你所需要的投入大概是:买服务器,安装服务器软件,编写网站程序。
  • 现在你追随潮流,采用流行的云计算。
  • 如果你采用IaaS服务,那么意味着你就不用自己买服务器了,随便在哪家购买虚拟机,但是还是需要自己装服务器软件。
  • 而如果你采用PaaS的服务,那么意味着你既不需要买服务器,也不需要自己装服务器软件,只需要自己开发网站程序。
  • 如果你再进一步,购买某些在线论坛或者在线网店的服务,这意味着你也不用自己开发网站程序,只需要使用它们开发好的程序,而且他们会负责程序的升级、维护、增加服务器等,而你只需要专心运营即可,此即为SaaS。 在这里插入图片描述

IDaaS

什么是 IAM、EIAM 和 CIAM和IDaaS :

  • IAM:Identity and Access Managetment,身份和访问管理,或者简称身份管理。 ①其实回顾过去二十年,当我们讨论 IAM 时,其实大多数人想到的都是针对企业内部员工、合作伙伴、临时人员等提供统一身份认证和权限管理能力的内部产品(Enterprise Identity & Access Management 或 EIAM)。然而,这是缺乏想象力的,不能因为 EIAM 传统而简单,就只谈论、只研发 EIAM。 ②随着软件的边界拓展到我们生活的方方面面,统一管理身份的需求也不断拓展边界,以企业为核心,由内而外,企业也开始容纳外部的海量顾客身份,由此诞生了针对互联网用户的顾客身份管理(Customer Identity & Access Management 或 CIAM)。举个例子,京东企业内部的工程师、快递员的身份管理均属于 EIAM,而电商平台中的卖家、买家的身份管理属于 CIAM。
  • IDaaS 是什么? ①2015 年开始,开始有 Accenture、AWS 等国外服务商率先将 CIAM 作为一个独立的、必须的产品来看待。完全不同于以内部效率为核心的 EIAM 产品,CIAM 的目标是协助企业完成全局的信息化转型,在所有对外服务中统一用户的身份,在以体验为核心的用户争夺战中,为终端用户提供完整的身份自助服务、为不同平台用户提供统一而流畅的使用、注册体验,以此来提高用户的留存、黏性,进一步创造价值,在行业竞争中取得先机。 ②所以今天的 IDaaS 是什么?它不仅仅是只将二十年前的 EIAM 上云,而是应该将 EIAM & CIAM 都上云,以完善的 IDaaS 帮助中国企业迈向全局的数字化转型。

IDaaS 详解:

  • IDaaS=SaaS+IAM
  • IT 服务中的「X 即服务(XaaS)」模型很容易理解,这意味着某些功能是通过供应商以云服务交付或提供给客户的,而不是在现场服务或由内部人员开发、运维的功能,这种差别就好比 —— 云电子邮件服务(例如 Gmail)和 PC 本地的电子邮件服务(例如 Thunderbird)的差别。身份、安全和其他功能也可以以类似的云服务模式提供。
  • 以往的信息系统建设对账号、认证、权限缺少平台级的统一规划,IDaaS将提供统一的身份管理的服务,可以支持不同应用、业务的身份认证和用户管理诉求,包括: ①需要单点登录提高生产率; ②需要基于标准的解决方案来完成身份证,例如SAML、OAuth、OIDC等; ③企业信息系统账号多源的问题一直存在,如AD/LDAP、钉钉/微信、HRM系统等,但缺少平台或完整的服务来整合这些不同源的身份账户间的关联; ④由于合规性的要求,对信息系统要求增加多因素认证(MFA),需要支出较大的开发成本和管理成本; ⑤使开发工作聚焦在业务上,而不是重复的构建和维护不同业务系统的身份管理和身份认证的问题; ⑥科学的账号管理需求,对账号的创建、更新、删除整个账号生命周期实现跨应用的统一管理; 应用权限统一管理和访问控制的需要。
  • IDaaS 的主要优势是节省: ①对于面向客户/用户的开发者,使用 IDaaS,可以更快地实现身份认证,不浪费宝贵的开发时间,使开发人员能够快速响应用户需求。在 authing.cn 中,开发者只需使用几行代码,就可以将身份认证、用户管理服务集成到以任何语言、任何框架编写的任何应用程序中,Authing 提供了 30 多种 SDK 和快速入门指南,可帮助您成功部署。 ②对于面向员工的组织 IT 管理,使用诸如 Active Directory(AD)服务之类的软件在配置人员应用身份时,会很麻烦。使用类似 AD 的这种传统服务,您的团队必须时刻保持服务的可用性;购买、升级和安装软件;定期备份数据;支付托管费用;设置 VPN……以及更多。而使用 IDaaS,成本将降低到只剩订阅费用,以及日常的简单管理工作就可以了。 ③除了节省费用外,IDaaS 的投资回报(ROI)还包括优化的网络安全性、更快的登录体验和更少的密码重置,从而节省了运维、管理的时间。无论用户是在家登录、在办公室登录或者是在楼下餐馆里登录,此过程都是无缝且安全的。改进的安全性可使开发者和企业免受黑客的入侵或破坏。

堡垒机(跳板机)

安全审计:

  • 安全审计是一个新概念,它指由专业审计人员根据有关的法律法规、财产所有者的委托和管理当局的授权,对计算机网络环境下的有关活动或行为进行系统的、独立的检查验证,并作出相应评价。安全审计(security audit)是通过测试公司信息系统对一套确定标准的符合程度来评估其安全性的系统方法。

堡垒机简述:

  • 跳板机(Jump Server),也称堡垒机,是一类可作为跳板批量操作远程设备的网络设备,是系统管理员或运维人员常用的操作平台之一。

为什需要堡垒机:

  • 随着企业信息化建设步伐的不断加速,IT对企业业务起到的支撑作用也越来越明显,毫不夸张的说,在相当一部分企业中,IT已经成为企业发展的生命线。相应的,在现今信息安全事故频发的背景下,企业对内部信息安全的管控也越来越严苛。通常情况下,有些企业会考虑通过部署传统堡垒机的方式来提高系统内部信息安全管理水平,满足相关规范要求,提供控制和审计依据。这些措施在传统运维方式下并无大的障碍,但在已经到来的云计算时代,企业上云对安全运维带来了新的挑战。
  • 云计算带来的新挑战时至今日,云计算不再是什么大势所趋,而是既成事实。诸多企业都已将应用系统迁移至云环境中,其中包括企业自建私有云及阿里云、腾讯云等巨头提供的公有云服务。云技术的发展使得云主机的运维方式发生了一定程度的变化,诸如混合云管理、公有云产品的安全防护等等。在传统的IT环境中,安全边界非常确,我们可以利用传统堡垒机、防火墙等对服务器、应用系统进行严格的访问控制,在业务迁入云环境后,传统堡垒机、防火墙已经不再适用,业务的边界远不如传统IT 环境边界清晰,因此云环境下,运维安全问题更加严峻。
  • 企业运维管理现状和问题目前,企业运维管理现状普遍有以下特点:主机账号管理混乱、密码长期不更换;主机管理权限不明确,操作系统自身难以实现权限最小化,从而导致过度授权、操作失误、数据泄露等一系列安全风险;企业使用第三方代维服务已是常态,第三方人员误操作、恶意操作等行为时有发生;缺乏有效的操作审计与控制手段,系统无法满足等级保护等法规的要求;上云后,云资源和原有资源不在同一个有效的管理体系内,云厂商本身并不提供资源的精细化管理;公有云资源的安全性无法保障。基于以上现状,在企业运维管理中必然存在如下问题: ①账号密码管理不规范随着企业IT规模的不断增大,各类主机资源、应用系统的管理也变得愈加困难,这些资源、应用系统都有一套独立的账号体系,为了方便管理,企业管理人员往往通过一个简单的表格来记录这些信息,使用时,也存在多人共用账号的情况。多人共用账号在带来方便性的同时,账号本身的安全性也无法得到保证,导致操作者的身份无法确定,当系统发生问题后,无法确认具体责任人。为了保证密码的安全性,企业通常会制定严格的密码管理策略,诸如密码必须定期修改,密码需保证足够的长度和复杂度等,但现实中,由于管理的资源规模太大和账号数量太多,这一费时费力的操作,往往都是流于形式。 ②资源授权不清晰在对资源进行授权管理时,如果仅依靠操作系统或应用系统本身的授权体系来实现管理,这样的方式太过于粗放,尤其是在账号密码的管理本身就不规范的情形下,如果再缺少资源层面的授权策略,无法基于最小权限分配原则管理用户权限,将导致难以与业务管理要求相协调。 ③上云后运维体系发生变化 在自建机房时代,运维人员接触的主要是硬件,但是上云之后,运维人员已经无法见到物理设备,彻底从硬件上解放出来。但同样的,云计算给运维带来极大的挑战。企业将业务迁入云环境后,异构的网络环境和需要通过公网才能访问的云环境,即便原先已通过传统堡垒机、防火墙进行安全管控,但云环境下,原有的安全措施已经不再适用,急需采取一种适应云环境的安全管理手段。云计算的弹性特征,让企业购买新设备变得简单,而随着设备的不断增加,以往简单靠运维人员手工处理的方式,已经很难再适应新的需求,企业需要更多地依赖自动化运维系统来进行处理,从而降低对运维人员的依赖,让运维人员更多的从被动走向主动,去关注企业业务发展和系统的主动优化。 ④访问控制不严格 访问控制的目的是通过限制运维人员对数据信息的访问能力及范围,保证信息资源不被非法使用和访问。企业目前的运维操作流程类似一个“黑盒”,我们并不清楚运维人员:在哪台设备上执行操作?操作是哪一位来执行?正在进行哪些运维操作?执行的操作是否合规?由此,日常的运维操作将会存在如下业务风险:失误操作导致关键应用服务异常、宕机;违规操作导致敏感信息泄露、丢失;恶意操作导致线上的敏感数据信息被篡改、破坏;无法有效监控第三方人员的维护操作是否规范与安全。 ⑤缺乏有效的运维审计能力在现今信息安全事故频发的背景下,对于运维人员的操作,如果缺乏有效的运维审计能力,当一旦出现运维事故时,我们很难去回溯追责。如果简单的依赖于系统日志,由于系统日志可读性差、零散、可删除、篡改、并且账号与运维人员无法一一对应,所以这并不是一种有效的审计方式。 ⑥面临法规遵从的压力为加强信息系统风险管理,政府、金融、运营商等陆续发布信息系统管理规范和要求, 如“信息系统等级保护”、“商业银行信息科技风险管理指引”、“企业内部控制基本规范”等均要求采取信息系统风险内控与审计,但其自身确没有有效的技术手段。上述风险带来的运维安全风险和审计监管问题,已经成为企业信息系统安全运行的严重隐患,制约业务发展,影响企业效益。对此,企业 IT 运维安全管理的变革已刻不容缓!img

防火墙与堡垒机的区别:

  • 防火墙是私有网络与公网之间的门卫,而堡垒机是内部运维人员与私网之间的门卫。防火墙墙所起的作用是隔断,无论谁都过不去,但是堡垒机就不一样了,他的职能是检查和判断是否可以通过,只要符合条件就可以通过,堡垒机更加灵活一些。
  • 堡垒机,也叫堡垒主机,是一种被强化的可以防御进攻的计算机,作为进入内部网络的一个检查点,以达到把整个网络的安全问题集中在某个主机上解决,从而省时省力,不用考虑其它主机的安全的目的。堡垒主机是网络中最容易受到侵害的主机,所以堡垒主机也必须是自身保护最完善的主机。一个堡垒主机使用两块网卡,每个网卡连接不同的网络。一块网卡连接你公司的内部网络用来管理、控制和保护,而另一块连接另一个网络,通常是公网也就是Internet。堡垒主机经常配置网关服务。网关服务是一个进程来提供对从公网到私有网络的特殊协议路由,反之亦然。
  • 防火墙(Firewall),也称防护墙,是由Check Point创立者GilShwed于1993年发明并引入国际互联网(US5606668(A)1993-12-15)。它是一种位于内部网络与外部网络之间的网络安全系统。一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络。换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信。

运维与协议

简介:

  • RDP协议运维:远程桌面协议(RDP)是一个多通道(multi-channel)的协议,让使用者(所在计算机称为用户端或'本地计算机')连上提供微软终端机服务的计算机(称为服务端或'远程计算机')。
  • SSH协议运维:SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。
  • SFTP协议运维:sftp是SSH File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。
  • BS运维:指普通运维用户登录堡垒机控制台并进入Web运维界面。

中台

中台简介:

  • 中台更多是因为公司业务在发展到某一阶段时,遇到瓶颈与障碍后,为解决实际问题而提出的解决方案。
  • 为什么需要中台? ①中台的产生,并非完全是自顶向下的战略设计,也并非是为了追随某种行业风口,而是随着公司业务高速发展、组织不断膨胀的过程中暴露的种种问题需要被解决。
  • 随着公司发展会产生许多问题: ①许多业务需求或功能需求高度类似、通用化程度很高,但是由于没有专门的团队负责规划和开发,大量的系统重复开发、重复建设,导致复用性低、效率低、产研资源浪费、用户体验不统一。 ②早期业务发展过程中,为了解决一些当下的业务问题,垂直的、个性化的业务逻辑与基础系统耦合太深,由于没有平台性质的规划,横向系统之间、上下游系统之间的交叉逻辑也非常多,这样导致在新业务、新市场的拓展过程中,系统没法直接复用,甚至没法快速迭代。
  • 中台能解决什么问题? ①中台作为一种产品设计思路,或者系统架构思路,并不受限于公司的规模,理论上讲,任何一家即将或者正在面临业务高速增长的状态时,都很值得利用和借鉴中台的思路,将目前业务当中大量可复用的功能和场景进行梳理,为业务的高速增长做好准备。
  • 链接:互联网公司中所谓中台是怎么定义的?

服务器、域名、端口、备案

服务器简介:

  • 服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。
  • 根据服务器所提供的服务,一般来说服务器都具备承担响应服务请求、承担服务、保障服务的能力。服务器作为电子设备,其内部的结构十分的复杂,但与普通的计算机内部结构相差不大,如:cpu、硬盘、内存,系统、系统总线等。
  • 服务器分类: ①云服务器 ②实体服务器

域名简介:

  • 域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。
  • 由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
  • 域名购买只能够选择一定的年限,没有永久拥有的情况。目前域名注册时间最少一年,最长10年,用户可以在域名到期前及时续费,确保自己对该域名的拥有权和使用权。而注册一个域名多少钱,具体要看域名名称和域名后缀。名称好的热门后缀,现在很难注册到,从别人手里购买的话,价格都非常高。
  • 域名有常见的五种分类方式。

按照域名级别分类:

  • 顶级域名,顶级域名又分为两类: ①是国家顶级域名(national top-level domainnames,简称nTLDs),目前200多个国家都按照ISO3166国家代码分配了顶级域名,例如中国是cn,美国是us,日本是jp等; ②是国际顶级域名(international top-level domain names,简称iTDs),例如表示工商企业的 .Com,表示网络提供商的.net,表示非盈利组织的.org等。目前大多数域名争议都发生在com的顶级域名下,因为多数公司上网的目的都是为了赢利。为加强域名管理,解决域名资源的紧张,Internet协会、Internet分址机构及世界知识产权组织(WIPO)等国际组织经过广泛协商, 在原来三个国际通用顶级域名:(com)的基础上,增设了新通用顶级域名(New GTLD)。 <1>新通用顶级域名是ICANN出台的一个新的开放政策,任何个人和公司都可以申请自己的域名后缀。截止到目前为止,已有上千个新后缀域名被申请,其中全球注册量最大的新通用顶级域名包括.xyz、.top、.wang、.win、.club、.party等。
  • 二级域名: ①二级域名是指顶级域名之下的域名在国际顶级域名下,它是指域名注册人的网上名称,例如 ibm,yahoo,microsoft等在国家顶级域名下,它是表示注册企业类别的符号,例如com,edu,gov,net等
  • 三级域名: ①三级域名用字母( A~Z,a~z,大小写等)、数字(0~9)和连接符(-)组成,各级域名之间用实点(.)连接,三级域名的长度不能超过20个字符。如无特殊原因,建议采用申请人的英文名(或者缩写)或者汉语拼音名(或者缩写)作为三级域名,以保持域名的清晰性和简洁性。
  • 总结:一般来说网站域名由二到三个域名组成。

按域名语种不同划分:

  • 域名按语言种类可划分为两大类: ①一类是英文域名,由26个英文字母、数字和中划线(-)构成; ②另一种即为国际化域名,即IDN (InternationalizedDomain Names)也称多语种域名,是指非英语国家为推广本国语言的域名系统的一个总称。含有中文的域名为中文域名,比如中文顶级域名有.中国、.商店、.广东、.世界等,含有日文的为日文域名,如日文域名コム.com,含有阿拉伯文的为阿拉伯域名,含有韩文的为韩文域名等等。顶级域名、二级域名、三级域名等均可以为IDN。

按域名管理机构分类:

  • 从域名的管理机构来划分,总体上可把域名分成两类:一类为为“国际顶级域名”(简称“国际域名”),另一类为“国内顶级域名”(简称“国内域名”)。 ①国际域名由非营利性国际组织ICANN(The Internet Corporation for Assigned Names and Numbers)运营管理—以.com、.net、.org、.cc 、.tv等根域为后缀的域名。 ②国家域名—在的后面再加上国家代码(如中国为.CN,日本为.JP,英国为.UK)后缀的域名。

按域名后缀的不同分类:

  • 域名后缀是指代表一个域名类型的符号。 不同后缀的域名有不同的含义,申请单位可根据自身的属性,选择相应后缀的域名。比如以下几种: ①.com:国际通用顶级域名,一般代表商业性的机构或公司。 个人和公司都可以注册,并且操作简单,只需要在域名注册商网站上注册用户,填写真实有效的信息,个人注册填写个人信息,公司注册则填写公司信息。之后充值就可以立即拥有该域名,解析一般是2小时生效。  ②.net:国际域名,最初用于网络机构。注册步骤同.com域名。  ③.org:国际域名,一般代表非盈利的组织、团体。注册方法步骤同.com域名。  ④.cn:国内域名,代表中国网站。由我国国际互联网络信息中心(Inter NIC)正式注册并运行。 个人和公司都可注册,只是cn域名注册比较严格,需要提交一些资料审核通过后才可以解锁。 

按照域名组成分类:

  • 纯数字:其中又包括区号,邮政编码和一般的数字域名,目前4位数以内(含四位数)在几年前就被抢注一空,现在任何一个4数字的流通价格都在4位数(千)以上。数字域名还有顺子域名,豹子域名等等,这一类域名的价格会比较高。
  • 英文单词:大众都熟悉的单词域名目前也被注册一空了,而且英文单词域名在国内比较少见,不利于记忆和输入,一般不建议做单词域名。
  • 双拼域名:其实也有单拼域名,但是单拼的太少了,也就400个左右,双拼是数量大,而且也是国内大多数企业的选择,所以投资双拼比较好,但是含义比较好的双拼也被注册完了,还剩下一半的双拼含义都勉勉强强。不过也具有投资价值,说不定哪家企业就用这样的名字作为品牌呢。
  • 组合域名,比如城市+单词/简写,这一类域名销路比较好,终端比较喜欢,而且也适合建站。
  • 声母/字母域名,这一类一般是拼音或者是英文单词的首字母组合域名,这一类域名的价值也非常高,终端建站都合适。
  • 杂米/创意米:例如51,91,开头后面加上拼音或者字母的,或者是666,888结尾的域名。国人也比较喜欢。

端口简介:

  • 端口号标识了一个主机上进行通信的不同的应用程序。
  • 注意: ①http的默认端口是80端口,是网页服务器的访问端口,用于网页浏览;而80端口是为HTTP开放的,HTTP是上网冲浪使用最多的协议,是主要用于在WWW服务上传输信息的协议。Tomcat服务器默认是8080端口。HTTPS的443端口在访问时不需要加端口号,相当于http的80。如果设置为8443端口在访问时需要加端口号。
  • 端口分类:端口可以按端口号可分为3大类: ①公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。 ②注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。 ③动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
  • 详细:
1.HTTP协议代理服务器常用端口号:80/8080/3128/8081/9098

2.SOCKS代理协议服务器常用端口号:1080

3.FTP(文件传输)协议代理服务器常用端口号:21

4.Telnet(远程登录)协议代理服务器常用端口号:23

HTTP服务器,默认端口号为80/tcp(木马Executor开放此端口)

HTTPS(securely transferring web pages)服务器,默认端口号为443/tcp  443/udp

Telnet(不安全的文本传送),默认端口号为23/tcp(木马Tiny Telnet Server所开放的端口)

FTP,默认的端口号为21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口)

TFTP(Trivial File Transfer Protocol),默认端口号为69/udp

SSH(安全登录)、SCP(文件传输)、端口号重定向,默认的端口号为22/tcp

SMTP Simple Mail Transfer Protocol(E-mail),默认端口号为25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口)

POP3 Post Office Protocol(E-mail),默认端口号为110/tcp

Webshpere应用程序,默认端口号为9080

webshpere管理工具,默认端口号9090

JBOSS,默认端口号为8080

TOMCAT,默认端口号为8080

WIN2003远程登录,默认端口号为3389

Symantec AV/Filter for MSE,默认端口号为 8081

Oracle 数据库,默认的端口号为1521

ORACLE EMCTL,默认的端口号为1158

Oracle XDB(XML 数据库),默认的端口号为8080

Oracle XDB FTP服务,默认的端口号为2100

MS SQL*SERVER数据库server,默认的端口号为1433/tcp 1433/udp

MS SQL*SERVER数据库monitor,默认的端口号为1434/tcp 1434/udp

备案:

  • 关于备案: ①备案号是什么呢?
    <1>所谓的备案号就是网站底部的一个“粤ICP备12345678号”这样一个文字,大型网站的底部都有。 ②备案号有什么用?
    <1>实际经营中,备案号一般没什么作用,就是挂到网站的底部展示,你的网站已经备案过了,至少获得了工信部的认可。 <2>个人网站备案号在申请一些联盟广告时(例如:百度联盟、淘宝联盟、360联盟等)网站必须要备案号。
    <3>企业完整申请支付宝、银联等在线支付接口时,网站必须要备案号。(注意:经营性网站需要经营性备案。) ③如何查到网站是否备案了?
    <1>在工信部网站首页的右下角可以点击备案查询,然后在打开的页面输入你的域名、或者网址、或者公司备案名称即可查询到,链接:工信部网站
    <2>但是由于这个网站系统不怎么好,经常会有查不到的现象,所以需要你耐心的多输入几次,或者多换几次查询的方式进行。 ④备案需要多久?
    <1>这个每个地方都不一定,目前:广东省内是约20天左右,上海约3天左右,其他地方请具体咨询您的服务器空间商。 ⑤可以不备案吗?
    <1>完全可以,不备案没有任何影响,不备案,浏览器输入域名可以立即访问您的网站,节约时间。
    <2>但是你的网站服务器机房不在大陆,就可以不用备案,一般来说不备案的服务器机房可以放到香港、台湾、美国、日本、韩国等地方,这样来说,就可以不用考虑备案的问题了,但是如果在美国或者日本等较远的地方,理论上来说,访问速度会有一定的延迟,也就是通俗的说:访问速度会慢,但是这个慢,只是毫秒级别上面的,一般正常人使用感受不到这个速度的,但是基于综合考虑:比较推荐选择港台服务器机房,毕竟物理距离较近。
  • 链接:阿里云备案流程

服务器、域名、备案总结:

  • 在我理解看来,备案是一种结对关系: ①是否需要备案取决于服务器位置 ②满足国内服务器+域名,这个域名想解析到服务器上就要对这个服务器备案。否则80.443端口不开。 ③如果服务器境外,随便怎么折腾都不存在备案一词。
  • 域名需要备案,服务器无需备案!服务器没有备案一说,不绑定域名的服务器国内一般只需要实名认证即可拥有和使用!域名是必须要备案的!否则是无法使用国内服务器的哦!
  • 如何完成域名和ip地址的绑定? ①一般的空间服务商都会提供空间的管理控制面板,其中有一项功能,就是绑定域名,绑定好域名后,再将域名的解析指向服务器的固定IP地址。

云服务器与部署

从公网访问内网的常用方法:

  • 通过公网访问某个只在内网的机器,或者把内网服务器的某个端口暴露到公网,是个十分常见的需求,也就是常说的内网穿透。 不管从事计算机相关工作还是自己瞎折腾,或多或少会遇到这种场景。
  • 端口映射: ①原理:在网关路由器或防火墙上配置将公网IP的某个端口映射到内网某个机器的某个端口。普通家庭路由器的设置页面也会有这个功能(尽管多数家庭宽带没有公网IP)。一般来说网管才能有配置这个的权力,一般人需要提出申请,批准后才能用。 ②使用条件:比较高的网络管理权限,或者需要提出申请和审批。 ③场景:我用这个方法的场景是工作时搭在内网的服务的要跟外面的人对接。 ④评价:比较正规的方式。但是如果自己暴露到公网的服务不靠谱,还是会有被黑进内网的风险。
  • VPN: ①原理:个人感觉这个词在普通人嘴里偏离了它最原始的作用,总是跟魔法上网联系上。让我回顾一下大学课程,看看 VPN 到底是个什么东西。 ②VPN (Virtual Private Network) 利用隧道协议,使用户通过公用网络传递内部网络的消息,就好像直接连接到内部网络一样远程访问内网的资源。因为要穿过公网,VPN协议通常会比较注重安全性和保密性。 其中最新的应该是一年前刚被加到 linux 内核里的WireGuard,主要解决的问题是之前的协议比较复杂难配置。 VPN 是一个非常大的话题,光是分类就有好多种分法,而且我都是从用户角度使用,没有自己研究和折腾过相关协议,原理方面这里无法细说。 ③从用户的角度,使用方法一般是跟IT部门申请一个帐号和想要访问的资源,打开软件登录或配置下网络,就可以通过公网访问内网资源了,比如特定服务器的特定端口。 ④VPN协议一般都会给隧道加密,之前常被用作魔法上网,但如今魔法上网最重要的不仅是加密而是不要被识别。尽管现在的常见魔法上网软件的原理基本都与 VPN 无关了,普通人还是会习惯性用 VPN 称呼这类软件,忽略了 VPN 的其他用途。去年的疫情有让人意识到 VPN 的正常使用方式从而遏制这个叫错的趋势吗?身边统计学,没有。 ⑤使用条件:学校/公司的IT部门提供这个服务,可能需要提出申请和审批。 ⑥场景:我用这个方法的场景是疫情期间在家远程干活。 ⑦评价:也是实现访问内网比较正规的一种方式。IT部门一般会直接买相关公司比如深信服的现成服务来用,一般也会提供比较完善的权限控制。被黑进内网的主要责任在软件的漏洞,个人只要保管好自己的密码或者密钥就可以了。
  • SSH: ①原理:需要一台在同一个内网又有公网IP的设备,这台设备一般被称作跳板机或堡垒机。简单来说就是你通过 SSH 连接跳板机,它再帮你连接内网其他机器,在你看来就好像直接连接到了内网机器一样。最简单的使用方式就是通过 ssh 的 -J 选项登录内网机器。 ②除了登录外,SSH 也可以提供端口转发。一般分为本地端口转发、远程端口转发和动态端口转发。 介绍下这几种端口转发的原理。假设你的电脑是A,跳板机B,内网机器C。本地端口转发是在A本地绑定一个端口X,A访问本地的X,经过B转发到C,相当于在访问C的一个端口Y。本地端口转发和远程端口转发的关系可以类比代理和反向代理的关系。动态端口转发就是去掉了C的Y这个限制,A告诉本地的X要访问的地址和端口,B来帮A访问。B在这里成了代理(Proxy)服务器。 ③如果还是不理解,一个比较好用的 SSH 客户端 MobaXterm 的 SSH 隧道配置界面有一个很形象的动画可供参考。 ④顺便一说,现在流行的魔法上网软件的原理基本都可以看成是自己造了个加密协议替代 SSH 然后实现上面所说的动态端口转发。 ⑤使用条件:一台在同一个内网又有公网IP的设备 ⑥场景:我用这个方法的场景是偶尔在外面远程登录内网机器干活。 ⑦评价:这个方法相对还是比较安心的,安全性由 SSH 来保证,这种基础协议和软件出问题的可能性更小,即使出了问题也更受到大家关注,补丁更及时。你只需要管好你的密码或密钥。
  • frp: ①frp 是一个 go 写的非常有名的可用来内网穿透的开源软件,本质是一个反向代理。 ②原理:虽然外面访问不到内网机器,但内网机器一般可以主动访问公网,因此可以用一台有公网IP的设备做反向代理。在内网机器通过运行客户端 frpc 主动与公网机器建立连接后,运行在公网机器的服务端 frps 将外面对公网机器端口A的请求转发到内网机器的端口B,实现将内网的一个端口映射到公网IP的一个端口。 ③使用条件:一台有公网IP的设备 ④场景:我用这个方法的场景是临时有内网的简单服务要外面访问。 ⑤评价:懒得走申请端口映射的流程时可以拿它凑合一下,但是有相对较大的安全风险。一旦被暴露的服务不靠谱,有人从那个端口黑进内网,所有的锅都要自己背。
  • zerotier: ①zerotier也是内网穿透常用的开源软件,但跟上面 frp 的原理完全不一样。它可以用来异地组网,跟 VPN 有点像但提供了P2P通信的功能。同时它也有点 SD-WAN 那味,可以中心化地管理虚拟网络里的节点。 ②使用方式是从它的官网注册帐号,创建一个网络。之后每台设备安装客户端,加入网络。之后每台设备会多出一个虚拟网卡,互相之间通过这个网卡在公网上通信,从而建立一个自己的虚拟局域网。由于每台申请加入的设备都要在管理页面上手动同意,经过公网的流量也会加密,所以看起来会相对安全。 ③原理:研究了一下官方文档。一个 zerotier 网络由 PLANET,MOON,LEAF 三种节点组成。LEAF 是普通节点,也就是需要通过这个网络互相通信的一台设备。PLANET 是根服务器,跟 DNS 里的根服务器类似,个人感觉也有点像 SDN 里的控制器。根服务器数量是确定的,由这家公司免费提供。每个其他类型的节点想要互相通信都必须先与根服务器通信。每个 LEAF 节点也可以通过配置成为 MOON,主要功能是做中继,加速通信路径的建立。 ④实际场景中,比如我的电脑A,内网机器B 加入了同一个 zerotier 网络。一开始他们之间并没有路径,A 发包给 B 要先与根服务器建立连接,帮它找到 B 在哪里。得知双方的消息后,根服务器会帮助他们NAT打洞,一旦打洞成功,AB之后的通信就是P2P的了,不再有根服务器参与;否则就只能通过根服务器转发流量。如果 A 和 B 与根服务器之间时延都比较大,那将非常痛苦。这时,如果网络里有一个 MOON 节点帮助转发,速度就会快一些。 ⑤使用条件:最好有一台有公网IP的设备,没有也能用。 ⑥场景:我用这个方法的场景是有内网服务要外面特定的几个设备访问。 ⑦评价:给我感觉还不错,因为建立的私网需要给每个设备点同意才能开始通信,看起来比frp这种完全暴露在公网要安全。但是 zerotier 的中心化程度还是比较高的,使用时强制要连接他自己的根服务器,如果没有一台国内服务器做 moon 节点中继的话效果并不好。 如果 zerotier 能很方便地自建根服务器完全摆脱这个公司提供的服务,在我看来那将绝杀。 此外还有一些类似的组网软件,如 nebula, n2n, tinc,自己没用过不评价。
  • wireguard: ①基于 wireguard 的 tailscale,它们都强调配置的简单,事实上确实都很简单,用起来体验也不错。 ②特别强调一下 tailscale可以看作是若干 wireguard peer 集中交换公钥并且提供了 NAT 打洞。
  • 其他现成服务: ①除了 zerotier,也有些国内公司会卖现成的服务,如花生壳、蒲公英,只是听说过没用过,无法给出评价。
  • 经验: ①安全,安全,还是他妈的安全! ②如果有相关的需求,在选择方法时安全一定是最优先考虑的。一旦操作不当内网就遭重了。以我的经验来说,内网还是挺脆弱的,弱密码到处都是。如果只是遇到扫描弱密码然后大张旗鼓挖个矿的脚本小子倒还好,大不了重装。如果遇到润物细无声悄悄进来搞事的就惨了,一般人很难发现。

内网穿透frp:

  • 这里说的内网穿透是指内网内有一个服务要暴露到公网上去。内网是内部的局域网,比如家庭网络,公司网络。以家庭网络为例,运营商提供公网接入后,家庭内部的多个电脑或设备组成的内部的网络,他们都可以上网,但内部服务无法暴露到公网上。如果运营商提供了公网IP的话,可以通过路由器上端口映射的功能,能够比较简单的将内网里的服务/端口映射到外网IP上去。如果运营商提供的光猫或路由器没有端口映射功能,需要将其设置为桥接模式,自己买路由器来接入上网并实现端口映射
  • 总之,上面是比较麻烦的。还有一种方式,那就是用比较软件的方式来实现,使用frp。这种方式的条件有: ①frp软件 ②有一个公网机器和公网IP,这个比较简单,华为云上弄一个ECS和EIP就可以了 image.png
  • 链接:内网穿透frp

服务器部署软件注意事项:

  • 应用层: ①连接的账号和密码,不能使用明文的方式配置在配置文件中。需要加密后配置在配置文件中。应用中使用公司的工具包,对加密后的账号密码进行解密然后去连接数据库
  • 服务器层: ①软件的访问密码不要设置弱密码,要设置强密码,然后把强密码记录下来 ②不使用默认端口部署,改为其他端口 ③不使用root用户名称,不再使用root,改为其他名称 ④应用在部署的时候,连接数据库需要单独创建应用使用的账号密码,不能直接使用root这一的管理员账号连接数据库 ⑤在授权的时候,禁止远程连接到MySQL服务,如果需要远程连接,则对指定IP地址进行授权。 ⑥做好软件的数据备份。 ⑦对于敏感数据的传输使用SSL/TSL协议或SSH连接,以确保在不受欢迎的视线下安全地传输信息。 ⑧非必要不在外网开放端口,只在内网开放端口,如需在外网开放端口务必强密码+修改端口
  • 腾讯云: ①安全组/防火墙设置: <1>只允许内网访问:10.0.8.0/24 允许 <2>只允许外网访问:10.0.8.0/24 不允许 <3>内外网都可以访问:0.0.0.0 允许 <4>只允许某个外网IP访问: X.X.X.X 允许 <5>除了某个外网IP其他都可以访问:X.X.X.X 不允许 ②一般来说家里和公司宽带都是DHCP没有固定IP,因此只能放开外网访问。
安全加固参考指引:

1) 设置用户(系统用户、应用平台用户、组件管理后台用户等)口令复杂度,口令设置大写、小写、特殊字符、数字三种任意组合,长度不低于12位,连续字符(包括数字、字母、键盘连续)不能超过二位;设置口令生命周期,建议90天修改一次。

配置参考链接:https://cloud.tencent.com/developer/article/1624229
设置账户错误失败锁定,如账户登录失败5次锁定10分钟等。

2)清理僵尸用户,禁用或删除服务器上设置的不需要的用户

3)修改远程登录服务的默认端口号以及禁止超级管理员用户登陆

Windows远程端口修改参考文档:https://cloud.tencent.com/developer/article/1052163

4)腾讯云平台有安全组功能,入站规则仅开放必要的业务端口(如80、443),不建议向互联网开放管理端口(如:6379、3306、1433、2379、22、3389等),如需要对互联网开放管理端口,必须配置IP白名单,出站方向如无外访问需求,建议全部拒绝,仅放开对主机安全的访问需求(目的IP169.254.0.55,目的端口5574、8080、80、9080,主机安全hosts文件域名绑定IP,vpc网络,域名域名:s.yd.qcloud.com; l.yd.qcloud.com; u.yd.qcloud.com,ip169.254.0.55,linux配置方法:vi  /etc/hosts

169.254.0.55  s.yd.qcloud.com
169.254.0.55  l.yd.qcloud.com
169.254.0.55  u.yd.qcloud.com)

参考链接:
https://cloud.tencent.com/document/product/215/20398

5)操作云服务器系统防火墙,必要的时候开启下防火墙做些安全规则。

6)不安装存在漏洞的组件及框架,建议使用最新版本的或最新稳定版本的组件及框架,及时安装安全补丁修复已知漏洞。

7)安装防恶意代码软件,定期更新特征库(针对Windows)。
以下为收费安全产品参考建议,可评估是否使用:

8)云服务器安装并确保防护软件主机安全专业版的正常运行,并添加实时告警,有异常登录时,及时反馈到您,关注主机安全告警并及时处置,安装参考文档:

https://cloud.tencent.com/document/product/296/12236,下载链接:https://console.cloud.tencent.com/cwp/asset/machine/install/window,https://console.cloud.tencent.com/cwp/asset/machine/install/linux。

9)主机安全定期检测漏洞、定期检查安全基线,并及时修复:https://cloud.tencent.com/document/product/296/46954

10)网站漏洞推荐使用漏洞扫码服务:https://cloud.tencent.com/document/product/692

11)定期快照备份数据,定期快照参考:https://cloud.tencent.com/document/product/362/8191。

12)若无固定IP又需要开放22和3389远程管理端口,建议您可使用云防火墙的身份访问规则功能(零信任)对远程管理端口进行防护(可有效防护22和3389端口的互联网侧暴力破解问题),具体功能请参考:https://cloud.tencent.com/document/product/1132/53010

制作系统镜像您可以参考:
https://cloud.tencent.com/document/product/213/4942

轻量应用服务器快照:  
https://cloud.tencent.com/document/product/1207/48546

数据快照操作您可以参考:
https://cloud.tencent.com/document/product/362/5755

定期快照您可以参考:
https://cloud.tencent.com/document/product/362/8191

重装系统参考:
https://cloud.tencent.com/document/product/213/4933

系统盘拷贝参考:
https://cloud.tencent.com/developer/article/1387468

云服务器配置安全组:
https://cloud.tencent.com/document/product/213/15377

安全加固操作安全方面我们只能给您建议,因为考虑安全性之前是要以业务的可用性为前提的,因为业务架构是您自建的,我们不能为了安全而影响基本的业务可用,因此安全方面我们只能给您提供对应的安全建议,而不能去全权操作。

java引擎

计算机学科中的引擎:

  • 一套稳固核心算法的封装,提供上层需求的底层驱动。
  • 引擎分类: ①第三方开源或商业引擎:润乾,思迈特等等。自家公司开发引擎。(Java开发)

什么是表单引擎?

  • 表单引擎系统是在完全WEB界面上可视化编辑的系统,可设置数据库的字段、属性,设置模块的配置。为企业信息管理人员或软件开发人员提供简单、快捷、高效的WEB表单设计和制作工具,无须书写任何程序代码即可轻松的与数据绑定并实现表单信息的储存和流转。
  • 对比传统的开发方式,每一个系统都通过编写代码去实现,比如公文管理、文件管理、人事档案、资产管理、采购审批等信息管理系统。虽然有了固定的开发模式,开发起来相对模板化,但是重复编写代码也是需要熟悉系统的开发人员。而每个客户对系统的要求千变万化,固定的系统已无法满足客户的需求,系统修改和后期的维护都需要熟悉系统代码的开发人员。结果是代码不好维护、人员流动性大、开发人员工资待遇又高,而又不得不满足客户的要求,造成了软件行业看似造价费用很高,而实际上大部分软件公司的利润不高,甚至花大价钱开发的系统不好使!
  • 如果你遭遇了传统开发方式的这些不幸,请看看表单定义系统带来的好处! 1.非专业的软件开发人员也可以完成用户个性化要求的系统。 2.提高工作效率。个性化系统定制,十分钟就可以完成程序员一天的开发量。 3.可随时根据用户的要求增加、删除字段及统计、汇总、数据导进导出,不需要修改任何一行代码。 4.快速定制。半小时可定制一个Demo,赢得客户的信任。 5.轻松维护系统。卖了千万套系统,也只需要维护一个系统的代码。 6.个性DIY系统。用表单引擎系统快速定义出其他系统,如:公文管理、进销存、客户关系、采购审批、请假单、通讯录、人事档案等。 7.表单名称汇总:表单引擎、表单工具、java表单、jsp表单、自定义表单、自定义表单工具、表单自定义、深圳表单、数飞表单、数飞表单引擎、DIY表单系统、用户自定义表单、OA表单、自定义OA表单、表单OA、表单管理、表单系统、字段调整、自定义字段、字段修改、字段权限、OA字段修改、表单自定义字段、自定义表单字段、数飞java表单等、报表表单、报表工具、自定义系统、表单流程定义系统、流程表单、流程加表单等。

什么是数飞表单引擎?

  • 数飞表单引擎V2.1版本,采用javascript技术实现html表单,将表单属性、控件属性保存到XML中,用JAVA技术驱动XML来实现数据表的自动创建和修改,实现程序的添加、删除、修改、查询、统计等功能。界面友好,操作方便,各种属性、控件的操作窗口都可以自由拖动。
  • 系统基于tomcat6、JDK6,数据库一般采用SQLSERVER,也可以使用Mysql,Oracle等关系型数据库。开发技术采用了JAVA、JSP、HTML、Mootools、AJAX等。
  • 最终的目的是由实施人员或者客户在可视化的界面上添加功能,实现不用编写任何代码就能完成软件功能的修改以及新功能的开发。

什么是报表引擎?

  • 引用工作流引擎的流程运转原理,在原始数据的基础上,定义报表的格式、报表的算法,根据定义的算法自动执行计算,并输出计算后的结果,再根据定义的报表格式显示报表的内容。
  • 报表引擎根据报表格式,从数据库的原始数据的基础上,提取原始的数据,依据定义的报表算法,进行自动计算;在提取报表主题及算法运算的过程中,报表引擎依据定义各种参数,实现所需的运算。用户自定义数据源,根据实际的情况,连接数据库,进行数据采集。提供快速集成各种类型数据库接口,完成数据的接入与采集。
  • 报表引擎的作用: 1、分离报表实际业务数据和展现形式,只需准备源数据,后续数据展现工作由报表引擎来完成。比如一些小计行,字段合并,大小写等都不应该写在SQL语句中; 2、采用多源分片和动态格间计算技术能够高效的完成复杂报表工作,缩短产品开发周期,提高产品质量; 3、通过提供的业务对象和简单的SQL语句构造向导,可以让业务人员制作简易报表; 4、考虑数据上报功能,系统解决项目和公司的数据来往业务,不需要给每个公司报表另单独做一个模块; 5、原来单据中编码会夹杂报表功能代码,报表引擎可以分离报表和实际单据业务功能,使得模块功能更清晰,可维护性更高; 6、提供报表推拉模式,可以由用户订阅关心的报表,使得能够方便的查看需要的数据; 7、通过提供保存查询条件的功能,可以使得公司负责人员打开报表就能看到预期的结果,免去重复性的输入。

什么是流程引擎?

  • 流程引擎说白了就是用来驱动业务按照我设定的固定流程去流转的东西,在复杂多变的业务情况下,使用既定的流程能够大大降低我们设计业务的成本,并且保证了我们业务执行的准确性。
  • 为什么选择activiti? ①activiti是java实现了工业领域BPMN2.0的规范标准框架,老牌、成熟稳定 ②目前用户众多、社区活跃、趋势较好 ③易于上手,基于Spring、MyBatis常用互联网技术堆栈
技术组成ActivitijBPM5
数据库持久层ORMMyBatis3Hibernate3
持久化标准JPA规范
事务管理MyBatis机制/Spring事务控制Bitronix,基于JTA事务管理
数据库连接方式Jdbc/DataSourceJdbc/DataSource
支持数据库Oracle、SQL Server、MySQL等多数数据库Oracle、SQL Server、MySQL等多数数据库
设计模式Command模式、观察者模式等
内部服务通讯Service间通过API调用O基于Apache Mina异步通讯
集成接口SOAP、Mule、RESTful消息通讯
支持的流程格式BPMN2、xPDL、jPDL等目前仅只支持BPMN2 xml
引擎核心PVM(流程虚拟机)Drools
技术前身jBPM3、jBPM4Drools Flow
所属公司AlfrescojBoss.org
  • 工作流其实就是工作的流转,工作流引擎是用来开发工作流转的框架,基本来说,就是定义了一个任务分为几个步骤,每个步骤都有输入、前置步骤和后续步骤,步骤之间是根据一定的条件进行跳转,这种工作定义一般是写在XML文件中的,这方面有一个规范,BPM2.0,可以图形化编辑流程。我接触过的是Java的工作流引擎,Activiti,其他的没接触过。

规则引擎:

  • Java规则引擎主要有JRules/Drools/JLisa/QuickRules等。我们以开源项目Drools进行介绍。
  • Drools是用Java语言编写的开放源码规则引擎,使用Rete算法对所编写的规则求值。Drools允许使用声明方式表达业务逻辑。可以使用非XML的本地语言编写规则,从而便于学习和理解。
  • 但是引入规则引擎太重太复杂。

引擎总结:

零代码与低代码

零代码介绍:

  • 零代码开发并非什么新鲜的概念。2000年左右就非常普遍。大家还记得水晶报表 ( Crystal Report ) 吗?不需要依赖开发人员,使用图形化的工具就能绘制报表。还有 Lotus Notes,可以在界面上配置数据表单,并且通过邮件的方式发送到各个部门填写。还有BPM软件(审批王、K2等),无需开发人员介入,使用图形化的方式就能配置表单与流程,实现业务流程的数字化。还有自助建站系统,选一个模版,画几个网页,就能生成一个高大上网站。然而这些都是20年前就存在的技术,零代码只是一个新头衔。
  • 从应用范围上来说,零代码开发目前能做的和20年前差不多,还是局限于细节的开发领域。这些开发可以总结出共性,可以标准化,可以设计出图形化的界面给最终用户使用,因此能大幅提升效率。
  • 目前的零代码开发平台主要有三类,界面设计类、表单流程类、数据管理类。 ①第一类是界面设计类,通过拖动的方式绘制用户界面。思路与传统的自助建站系统雷同,只是现在进行了扩展,不只是开发网页,还能与后台的业务数据交互。不仅能绘制电脑端的界面,还能设计手机端的样式。典型的厂商有 微软的 PowerApps,被西门子收购的Mendix,以及获得大笔融资的Outsystems 。 ②第二类是表单流程类,这一类工具谈不上新技术,基本上就是BPM厂商在炒作,还是20年前那一套图形化的流程设计、表单设计工具,换汤不换药。这一类工具只实现了审批的过程管理,流程结束,管理就结束了。 ③第三类是数据管理类,这一类工具最早的实现方式其实是Excel,可以设定很多字段,可以把数据录入进去然后进行统计。随着应用的深入,为了实现共享编辑,Google发明了云端的Excel,可以多人同时编辑,可有追踪每个人的修改痕迹。但Excel不能定义字段类型,不能做输入校验,不能控制权限,于是 Salesforce 发明了云端数据库的模式,可以在线创建数据表,设定字段,并融入了第一类和第二类开发工具的界面设计、流程设计的功能,打造了一套云端开发管理系统的新模式,也因此迅速红遍全球,成了最热门的管理软件开发工具。
  • 既然零代码开发这么美丽,为什么还需要低代码开发平台呢? ①前面Salesforce的故事只说了一半,零代码只是开发的第一步。我们都知道Excel可以配置公式,实现数据计算,并提供了数百个公式,可以实现很多很复杂的功能,这就是一种最基本的低代码。这些公式,给简单的Excel文档带来了更大的价值,说的高大上一点,也算是一种人工智能。 ②系统开发也一样,你不可能只是简单的录入和查看数据,为了让系统更智能,你必须要做很多计算。比如对于一套物品领用的管理系统,你需要实时扣减库存;对于一套会议室预约的系统,你需要计算会议室是否被占用;对于一套请假系统,你需要计算员工的年假还剩几天,还能不能继续请年假。这些就是开发人员所说的业务逻辑的部分。通过编写业务逻辑,可以让系统更智能,提升工作效率。 ③如何编写业务逻辑呢?Salesforce 的实现办法是使用触发器,在数据保存之前,编写代码进行校验,数据保存之后,更新相关的数据表。国产的低代码开发平台华炎魔方,也是类似的思路。

低代码介绍:

  • 简介: ①低代码是英文“Low Code”的翻译,当然,此“Low”非彼“Low”,它意指一种快速开发的方式,使用最少的代码、以最快的速度来交付应用程序。 ②低代码开发平台本身也是一种软件,它为开发者提供了一个创建应用软件的开发环境。对于程序员而言,低代码开发平台的性质与IDEA、VS等代码IDE(集成开发环境)几乎一样,都是服务于开发者的生产力工具。 ③与传统代码IDE不同的是,低代码开发平台提供的是更高维和易用的可视化IDE。大多数情况下,开发者并不需要使用传统的手写代码方式进行编程,而是可以通过图形化拖拽、参数配置等更高效的方式完成开发工作。
  • 低代码的应用场景: ①定制化开发 ②没有现成的配置,需要自己开发 ③需简化的业务流程,减少实现复杂度
  • 低代码实现逻辑: ①低代码的持久化过程:低代码模型封装-->功能校验-->持久化到MongoDB ②低代码引擎的调用流程:通过低代码脚本id获取低代码模型对象-->调用引擎管理器-->-解析函数库->解析 ③并执行脚本-->持久化到MongoDB:<1>七巧系统函数库<2>编写函数
  • 链接:国内八款低代码平台盘点

零代码、低代码、全代码的区别:

-无代码低代码全代码
定义无代码开发平台是一种完全不需要任何代码编程的开发方式,它主要是围绕企业数据和业务管理需求,通过可视化方式设计数据结构,用户交互形式、设置访问权限和定义工作流程的平台。低代码开发平台是可以通过少量代码就可以快速生成应用程序的开发平台,是一种通过可视化进行应用程序开发的方法。其最大的优势是用拖拽组件和模型驱动的逻辑来代替传统开发语言来创建网页和移动应用程序。全代码开发通常指的是传统定制开发,由专业IT技术人员根据用户需求,通过代码编写实现软件系统或者系统软件搭建的工程。与更传统和更广泛的现成软件相比,这种模式可以更加精确地满足客户的需求。
用户群技术支持、运维人员、销售,主要面向的是无开发经验的小白初级开发人员,通过配置生成代码在不满足功能的情况下,可进行二次开发,主要懂基础开发的技术人员。中、高级开发人员
定位面向普通用户(非开发人员)自主开发应用程序的平台面向开发人员的快速应用程序开发工具面向开发人员的传统定制软件开发方式
优势1.通过可视的编辑、拖拽来完成系统开发,简单快速。2.不需要开发人员介入,技术、运维、销售人员通过配置即可搭建系统1.基于低代码开发平台开发,可以借助搭建、配置等手段快速生成基础业务代码,开发周期更短,开发成本更低,业务调整更快。2.二次定制开发的过程中可以进行物料积累,反馈到低代码体系中,完善流程3.相比零代码平台,早期投入成本更低传统定制开发拥有更高的自由性,而且软件的定制风格,界面ui可自己掌控。虽然造价高昂,但依然有部分企业喜欢这种方式。
劣势1.相比低代码平台,早期投入成本更高2.研发介入的时候,由于要考虑兼容、特殊化定制等问题,导致更新滞后性且耗时严重3.业务模型、边界单一,不支持复杂业务和定制化业务1.需要开发人员介入,开发成本投入较多2.搭建、配置的过程,需要了解一定的开发体系知识,上手成本超过无代码3.业务模型、边界虽然扩大但依然有一定的范围限制需要开发人员介入,开发成本投入更多
比全代码开发速度8倍3倍1倍
易用性★★★★★★★★
技术要求无需编码能力基础编码能力较强编码能力
市场更适合2C、SAAS更适合2B、PAAS需要定制化的企业
应用场景无代码只适合业务用户,并且对定制的要求很低,多适用于固定的场景低代码平台旨在同时服务初级开发者和专业开发人员全代码适合对定制化需求较高的企业
个性化、复杂业务支持度

华炎魔方低代码项目:

  • Steedos 低代码开发平台重新定义了企业级应用的构建方式,使得无编程背景的用户也能迅速构建和开发应用,大幅简化了传统软件开发流程。对于经验丰富的开发者,Steedos 提供了一系列强大的工具和框架,支持深度定制和复杂系统集成。无论是快速构建简单应用还是实现复杂的业务解决方案,Steedos 都能提供高效、灵活的开发体验。
  • Steedos 支持广泛的企业应用场景,包括客户关系管理(CRM)、人力资源管理(HRM)、企业资源规划(ERP)、业务流程管理(BPM)、商业智能(BI)、物联网(IoT)等。

amis前端低代码框架与编辑器:

  • 介绍: ①amis 是一个低代码前端框架,它使用 JSON 配置来生成页面,可以减少页面开发工作量,极大提升效率。 ②在经历了十几年的发展后,前端开发变得越来越复杂,门槛也越来越高,要使用当下流行的 UI 组件库,你必须懂npm、webpack、react/vue,必须熟悉 ES6语法,最好还了解状态管理,比如Redux,如果没接触过函数式编程,光入门都很费劲,而入门之后会发现它还有巨大的生态,相关的库有2347个,很多功能相似,挑选成本高。 ③用 amis 只需要157行 JSON 配置(其中 47 行只有一个括号),你不需要了解 React/Vue、Webpack,甚至不需要很了解JavaScript,即便没学过 amis 也能猜到大部分配置的作用,只需要简单配置就能完成所有页面开发。这正是建立 amis 的初衷,我们认为:对于大部分常用页面,应该使用最简单的方法来实现,甚至不需要学习前端框架和工具。 ④使用 JSON 有优点但也有明显缺点,在以下场合并不适合 amis: <1>大量定制 UI:JSON 配置使得 amis 更适合做有大量常见 UI 组件的页面,但对于面向普通客户(toC)的页面,往往追求个性化的视觉效果,这种情况下用 amis 就不合适,实际上绝大部分前端 UI 组件库也都不适合,只能定制开发。 <2>极为复杂或特殊的交互:有些复杂的前端功能,比如可视化编辑器,其中有大量定制的拖拽操作,这种需要依赖原生 DOM 实现的功能无法使用 amis。但对于某些交互固定的领域,比如图连线,amis 后续会有专门的组件来实现。
  • 使用官方提供的 ①链接:amis-editor-demo编辑器 ②优点:打开就能用,不需要本地各种环境设置 ③缺点: <1>编辑器是固定版本,不是最新的,不能享受近明合并提交的pr修复的问题 <2>遇到问题无法掌控,无法自己主动处理修改 <3>其他未知问题
  • 使用amis开源源码内的编辑器源码编译使用 ①简单来说就是直接用源码跑,官方github库有更新了随时跟进 ②链接:amis源码 ③优点: <1>现在的编辑器更新比较频繁,有新的pr了就拉到本地,直接就是最新功能的编辑器和amis <2>有能力的话 (javaScript、react 比较熟练点),可以自己随意魔改编辑器,让它更适合自己用! <3>本地使用 不需要联网

java沙箱

简介:

  • 我们都知道,程序员编写一个Java程序,默认的情况下可以访问该机器的任意资源,比如读取,删除一些文件或者网络操作等。当你把程序部署到正式的服务器上,系统管理员要为服务器的安全承担责任,那么他可能不敢确定你的程序会不会访问不该访问的资源,为了消除潜在的安全隐患,他可能有两种办法: ①让你的程序在一个限定权限的帐号下运行。 ②利用Java的沙箱机制来限定你的程序不能为非作歹。以下用于介绍该机制。

  • 什么是沙箱? ①Java安全模型的核心就是Java沙箱(sandbox),什么是沙箱?沙箱是一个限制程序运行的环境。沙箱机制就是将 Java 代码限定在虚拟机(JVM)特定的运行范围中,并且严格限制代码对本地系统资源访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。沙箱主要限制系统资源访问,那系统资源包括什么?——CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。 ②所有的Java程序运行都可以指定沙箱,可以定制安全策略。

  • 沙箱的安全检查点非常多,下面列举一些常见的场景: ①文件操作 ②套接字操作 ③线程和线程组 ④类加载器控制 ⑤反射控制 ⑥线程堆栈信息获取 ⑦网络代理控制 ⑧Cookie 读写控制

  • 链接:java中的安全模型(沙箱机制)

支付宝沙箱环境:

私有化和公有化部署

私有化部署的好处:

  • 我们知道很多大型企业在使用企业微信时,都进行了私有化部署,那么进行私有化部署对于企业来说有什么好处呢?企业为什么要进行私有化部署呢? 1、安全可控。进行私有化部署后,系统部署到企业自己的服务器上,数据直接保存在本地中,更加的安全。 2、拓展性强。企业可以进行二次开发,进行自主升级。 3、支持个性化定制。在进行私有化部署时,可以根据自己企业的需求与情况进行个性化定制,让产品能更好被企业所使用。

私有化部署与公有化部署的区别是什么呢?

  • 私有化部署与公有化部署最大的区别就是数据保存的地方不同,私有化部署后,使用产生的数据会保存在本地中,采用公有化部署时,产生的数据保存在应用云端,相比之下,私有化部署的数据会更加安全可控。
  • 虽然私有化部署更加的安全,但是公有化也有它的优势,那就是成本更低。
  • 私有化部署需要企业拥有自己的服务器,如果没有服务器则需要租用服务器,而公有化部署则不需要服务器,成本更低。并且私有化部署后,需要有专业人士进行维护,而采用公有化部署时,产品方会每天进行维护,不需要企业进行维护,又减少了一些开支。
  • 在使用时,企业不需要过度追求私有化部署,而应该看企业更适合哪一种,如果企业有足够的实力,并注重数据安全,就采用私有化部署,如果企业觉得私有化成本太高,公有化就足以保障数据安全,就可以采用公有化部署。

LICENSE与LICENSE服务器

License详解:

  • 为什么使用License: ①许多开发者和设计者希望把他们的作品作为开源项目共享,他们希望其他人能够利用和共享他们的代码。而各种开源社区就是因为这个原因而充满活力。开源软件可以用于你能想象得到的任何应用程序,许多web设计人员使用开源软件作为开发基础(例如WordPress,Drupal等等许多CMS系统都是开源的)。 ②但是许多开发者和设计者并没有对开源License有清楚的了解,不清楚当他们选择开发自己的源代码时,他们有什么权利。如果不知道明确的License的内容,他们就不知道如何做出最明智的选择,如何做对他们最有利。 ③对于中国的开发者来说,因为中国发达的盗版文化,泛滥的盗版软件,大部分人恐怕都完全没有License或者版权这个概念,都是奉行拿来主义。如果我们一直都是这样的话,中国软件何来进步。所以对于国内的开发者来说,第一课就是应该学习如何使用和遵守License。
  • 什么是License: ①许多混乱就始于你不知道License到底是什么,到底有什么含义。当你对你的产品使用License时,并不意味着你放弃了任何权利,你依然对其拥有原著作权。License只是授予他们于特定权利来使用你的产品。 ②License只是把你的作品释放到公有领域,或者给各个拷贝赋予权限。也意味着你放弃了版权收入,别人也没有义务把你列为原作者或贡献者。 ③开放源代码许可协议更容易为他人作出贡献,而不必寻求特别的许可。它也可以保护你作为原创者的权利,至少确认了你的贡献。它还可以保证你的工作不 为别人所剽窃。
  • License示例: ①GNU General Public License(GPL)的可能是开源项目最常用的许可证。GPL赋予和保证了开源项目开发者广泛的权利。基本上,它允许用户合法复制,分发和修改软件。 这意味着你可以: <1>复制软件:复制软件到自己的服务器,客户端的服务器,你自己的电脑,几乎任何你想要的地方,而且没有数量限制。 <2>发布软件:发布你想要的软件,例如,在你的网站提供下载链接,刻成光盘,打印出来等等。 <3>收取费用:如果你想在向别人提供软件时收费,如设置在别人的网站上或者其他用途时。GPL允许你这么做,但是你必须给客户提供一个GPL副本,告诉 他们可以在其他地方得到免费版本。当然最好在此之前,告诉客户,你为什么收费。 <4>可以任意修改:如果你想添加或删除功能,没问题。如果想在其他项目中使用部分代码,也是可以的,但是唯一的限制是此项目也必须按GPL发布。
  • 链接:各种LICENSE的作用--GET

LICENSE服务器(许可证服务器):

组件、套件、 中间件、插件

概念:

  • 组件: ①位于框架最底层,是由重复的代码提取出来合并而成。 ②组件的本质是一件产品,独立性很强;组件的核心是复用,与其它功能又有强依赖关系。
  • 模块: ①在中台产品和非中台产品中,都会把具有同一功能价值的,或具有同一业务属性的,按不同粒度定义为一个模块。 ②不同的是,在非中台产品中,主应用与模块、模块与模块间是强耦合关系,模块不可以独立运行;而在中台产品中,主应用与模块间的耦合变为主应用与接口、接口与模块的耦合;这样,降低了模块间的耦合,模块是可以独立运行的。
  • 套件: ①技术中台产品化的过程,也是确定套件组成的过程,如:套件中有哪些模块?各模块有哪些组件或功能?
  • 中间件: ①是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。 ②它位于客户机/服务器的操作系统之上,管理计算机资源和网络通讯,是连接两个独立应用程序或独立系统的软件。 ③这样相连接的系统,即使具有不同的接口,但通过中间件相互之间仍能交换信息;典型的云化中间件包括分布式消息队列、分布式缓存、分布式锁、分布式ID等。
  • 插件: ①是一种遵循一定规范的应用程序接口编写出来的程序。 ②很多软件都有插件,例如:在IE中安装相关的插件后,WEB浏览器能够直接调用插件程序,用于处理特定类型的文件,如Flash插件、RealPlayer插件、ActiveX插件等。

关系:

  • 相同点:组件、套件、中间件、插件的设计思想是复用,把通用的、不变的、主控制流程的逻辑框架封装起来,把变化的部分通过各种方式暴露出去。
  • 不同点: ①组件:封装的是一个独立的功能,可以作为一个产品输出。 ②模块:是由一个或多个组件组成,模块与模块之间的逻辑关系并不会在中台产品中体现,它们之间的逻辑关系是在新的产品或解决方案中。 ③套件:可以是由一个多个组件,也可以是一个或多个模块组成,是一个或多个产品的组合,它最初为解决某一特定问题制定解决方案,再将其产品化。 ④插件:将主控制流程封装在内部后,需要扩展的点让开发者去扩展。插件就是插到程序所暴露出的扩展点上的。 在这里插入图片描述