IT名词归纳与简单了解

云计算概念

云架构

  • 我看过两本云计算,《云计算》《云计算架构技术与实践》
    1. 云计算是一个很广的概念,简单的说将互联网中的计算机资源按需分配,提升闲置资源的利用率,须要多少你就购买多少,之前是买软件和硬件,如今是买服务
    2. 从咱们公司的角度,购买云服务能够减小运维成本,获得可伸缩性的弹性服务,你能够认为云的计算/存储能力是无限的
    3. 如今主流的云服务有IAAS(基础设施服务),PAAS(平台服务),SAAS(软件服务)
  • 云架构包括了不少技术领域,虚拟化技术,分布式计算,分布式存储,网络技术,容器技术
  • 虚拟化是基础设施层的核心技术
    1. 虚拟化就是将硬件设施拆分抽象,而后进行统一管理,虚拟化包括CPU虚拟化,存储虚拟化,网络虚拟化,操做系统虚拟化
    2. 目前主流的虚拟化技术有Xen,能够实现不一样级别的虚拟化, KVM能够实现基于Linux内核的虚拟化
    3. 开源框架OpenStock能够对这些不一样虚拟化实现进行整合,组成一个分布式系统
  • OpenStock是一款来源云操做系统框架
    1. 他提供了不少与架构功能,包括计算服务,存储服务 ,镜像服务,网络服务,容器服务
    2. OpenStock还整合了不少容器,好比Docker,还有大数据系统Hadoop
    3. 基于OpenStock和虚拟化能够提供云架构的基础设施服务
  • 如今更热的是PAAS,不少大公司包括亚马逊,谷哥,微软的Azuro都提供云平台服务
    1. 平台服务就是给客户提供系统的开发运行环境,就是容器
    2. 他比IAAS更低成本,由于他是按流量收费或者资源使用量的,而不是按虚拟机个数,并且他更稳定,由于相比本身实现,容器帮你屏蔽了宕机等风险,PAAS还有一个优势是它能够实现智能化的资源分配,使你的系统在高峰和低峰获取相应的资源。
  • 要实现PAAS,Docker实如今很火的容器技术
    1. 基于Docker的云平台服务有一个很大的优点,它屏蔽了你的开发语言,你提交到PAAS的再也不是代码,而是Docker镜像。不像之前PAAS,只支持少数语言,并且迁移到云端的时候还得该大量代码。
  • 对于现代企业来讲桌面云是一种很好的选择,它有几大优势,下降成本,统一管理,移动化办公等。

云应用

  • 了解云服务的架构,可使咱们更好的使用云服务,对于咱们开发团队来讲,如何更好的利用云平台来实现咱们的应用是咱们须要关注的事情
  • 这里有一个概念,就是原生云,并非你把项目迁移到云,你有是一个云应用,由于你没有享受到云服务的大部分好处
  • 原生云是可扩展性的,分布式的,云的真正优点所在,只能经过使用原生云服务实现。
    1. 系统与平台松耦合 :好比你用微软的Azure,而后用力他们的DocumentDB,你的应用就被绑定在Azure上了
    2. 单一职责的服务器:从而实现蓝绿部署原则
    3. 子系统松耦合: 每个子系统均可以按照本身的需求来获取相应的资源
    4. 系统和WEB容器松耦合: 可让Web容器利用云平台的负载均衡器或者队列机制,独立的扩展Web容器而和应用系统无关
    5. 将本地存储看作是临时存储: 在传统方法中,应用将配置、日志文件、图像等存储在本地存储中。然而,须要改变这种作法,任何持久信息都应转移到一个持久的服务上,实现数据块或对象的存储。
    6. 构建弹性云: 最好是在架构和设计时,就考虑到对应用故障的处理,而不是去考虑并力图实现稳健性。稳健性是永远也不可能实现的。消除单点故障(SPOF,Single Point Of Failure),逐层构建弹性。这样,即便底层硬件发生故障,应用也可正常运行。 AWS Availability Zones(AZ)和Regions简化了冗余能力的设计,相似的服务还有Azure Locally Redundant Storage(LRS)、Zone-redundant Storage(ZRS)、Geo-redundant Storage(GRS)和Read-access geo-redundant storage(RA-GRS)
    7. 边缘站点(Edge Location)的缓存 : AWS边缘站点(Edge Location)或Azure PoP(Point of Presence)将缓存提高到了一个新的级别,并下降了延迟。尽量地使用支持经由边缘站点进行内容传送的云原生服务(例如,AWS Cloudfront或Azure CDN)。
    8. 在每一层上应用安全
  • 我是搞Java的我目前正在看的是Spring Cloud,他重要用于实现微服务架构
  • 咱们还要考虑哪些应用适合运化,哪些不适合
    1. 游戏类,图形渲染类,大流量实时要求高不适合
    2. 高性能计算,大数据存储,多方合做的应用适合
  • 各大云服务提供商

物联网概念

  • 物联网就是万物互联,具体的将就是将须要联网的设备终端,用户接口,和信息处理系统联通
  • 其中设备终端要有一个可编程的平台:这个平台包括芯片组,CPU,传感器,通讯模块等
  • 物联网能够分为三个主要模块:传感器,网络通讯,还有管理系统
  • 传感器有射频识别(RFID),GPS,红外,图像感知,光,温度,距离,心率等等
  • 物联网开发分为终端设备编程,就是嵌入式编程,还有就是软件开发,物联网终端设备要懂的是传感器,IP6,无线通信等

网络编程概念

网络基础

  • 保留ip
    1. 10开头, A类个数最多
    2. 127.16-127.31, B类,docker内部网络占用
    3. 192.168, C类,个数最少,局域网最经常使用

基础

  • TCP/IP
    1. TCP是一种基于链接的协议。在使用流通讯以前,咱们必须在通讯的一对儿socket之间创建链接。其中一个socket做为服务器进行监听链接请求。另外一个则做为客户端进行链接请求。一旦两个socket创建好了链接,他们能够单向或双向进行数据传输。
  • UDP
    1. UDP是一种无链接的协议,这就意味着咱们每次发送数据报时,须要同时发送本机的socket描述符和接收端的socket描述符。
  • HTTP
    1. 单工通道应用层协议
    2. 基于TCP/IP
  • Socket
    1. 对TCP或者UDP接口的封装的接口,使得通信协议更加便于使用
  • WebSocket
    1. 双工通道应用层协议
    2. WebSocket是html5的一部分
    3. Java能够用Spring WebScoket和Tomcat WebSocket

Java Only

  • Servlet
    1. Java对于网络编程的规范接口,因此服务器端必须是Java程序
    2. 具备Java平台无关特性
    3. 具备网络协议无关性
  • HTTPServlet
    1. 支持HTTP协议的Servlet,好像没有其余Servlet支持其余协议
  • Servlet容器:Tomcat,Weblogic/Jetty
    1. 对HttpServlet抽象类的不一样实现
    2. 运行在JVM中
    3. 接收到浏览器发送的Http请求后,将其封装成HttpServlet,因为发送方式js,接收方式java,因此容器必须理解两种语言的不一样规范,进行相互转换
    4. 看源码
  • Struts2的Action
    1. 对Http协议的另外一种规范接口
    2. 经过拦截action规范的http请求后,将其封装成java bean
    3. 看源码
  • Spring MVC
    1. 看源码
  • HttpClient
    1. Java用于发送Http请求,好比servlet请求或者action请求

编程语言无关

  • WebService
    1. 对于网络编程的规范
    2. 具备平台无关性
    3. 支持HTTP,FTP,SMTP等协议
    4. 最重要的是具备编程语言无关性
  • SOAP
    1. 简单对象访问协议的WebService
    2. 支持HTTP,FTP,SMTP等协议
    3. Java框架有Xfire、Axis二、CXF、Axis1
    4. 使用Web Service的过程:得到该服务的WSDL描述,根据WSDL构造一条格式化的SOAP请求发送,而后接收一条一样SOAP格式的响应,最后根据先前的WSDL解码数据
  • REST
    1. 表象化状态转变风格架构的WebService
    2. REST为每个资源指定一个惟一的URI,而用HTTP的4种方法GET、POST、PUT、DELETE直观地表示获取、建立、更新和删除
    3. 服务器无状态带来了简单的好处以外,还带来了安全验证的问题,这种复杂化会使RESTfull走向SOAP
    4. RESTEasy、Wink、CXF、Axis2

DevOps

资料

总结

  • 代码管理(SCM):GitHub、GitLab、BitBucket、SubVersionhtml

  • 构建工具:Ant、Gradle、mavenhtml5

  • 自动部署:Capistrano、CodeDeployjava

  • 持续集成(CI):Bamboo、Hudson、Jenkinspython

  • 配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRailios

  • 容器:Docker、LXC、第三方厂商如AWSredis

  • 编排:Kubernetes、Core、Apache Mesos、DC/OSdocker

  • 服务注册与发现:Zookeeper、etcd、Consulshell

  • 脚本语言:python、ruby、shell数据库

  • 日志管理:ELK、Logentries编程

  • 系统监控:Datadog、Graphite、Icinga、Nagios

  • 性能监控:AppDynamics、New Relic、Splunk

  • 压力测试:JMeter、Blaze Meter、loader.io

  • 预警:PagerDuty、pingdom、厂商自带如AWS SNS

  • HTTP加速器:Varnish

  • 消息总线:ActiveMQ、SQS

  • 应用服务器:Tomcat、JBoss

  • Web服务器:Apache、Nginx、IIS

  • 数据库:MySQL、Oracle、PostgreSQL等关系型数据库;cassandra、mongoDB、redis等NoSQL数据库

  • 项目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker

函数式编程

什么是函数式编程

  • 函数指数学中到函数,而不是编程中到方法
  • 一个函数到返回值只取决与参数到值
  • 纯函数式中到变量不是命令式编程语言中的存储状态的单元,而是代数中的变量,即一个值的名称。变量的值是不可变的
  • 纯函数式编程中到流程控制语句也不是命令式编程语言中的控制语句,而是函数的语法糖,是有返回值的
  • 严格意义上的函数式编程意味着不使用可变的变量,赋值,循环和其余命令式控制结构进行编程

函数式编程到特性和好处

  • 代码简洁,容易理解
  • 不可变性 - 没有反作用,更适合多线程
  • 高阶函数 - 使得复用到粒度下降到函数
  • 惰性求值 - 减少开销,提升性能
  • 柯里化?闭包?
相关文章
相关标签/搜索