1.网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,但IP地址是一串32位的数 字,DNS可以帮助我们解析DNS就是域名系统,是用于实现域名和IP地址相互映射的一 个分布式数据库。
2. WAF1.WAF的全称是(Web Application Firewall)即Web应用防火墙,简称WAF。
2.国际上公认的一种说法是:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专 门为Web应用提供保护的一款产品。
3.WAF一般部署在Web服务器之前,用来保护Web应用。
4.那么WAF能做什么?
● WAF可以过滤HTTP/HTTPS协议流量,防护Web攻击。
● WAF可以对Web应用进行安全审计
● WAF可以防止CC攻击
● 应用交付
1.CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的internet 中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取 得所需的内容,提高用户访问网站的响应速度。
2.CDN的实现需要依赖多种网络技术的支持,其中负载均衡技术、动态内容分发与复制技术、 缓存技术是比较主要的几个。
3. CDN的优势很明显:
(1)CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低;
(2)大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源站的负载。
1.官方定义:防火墙,用于保护一个网络免受另一个网络的攻击和入侵行为,其本质是控制。
2.网络安全市场,存在一种设备名为ISR,全称叫集成多业务路由器Router
3.现在市面上的防火墙,主要以以下几种形态存在 :
①硬件防火墙(独立)
②防火墙模块(能够集成到支持的设备中)
③虚拟化防火墙,(基于软件层面实现的一种应用)
4.为何虚拟防火墙只是一个趋势,没有成为主流?
①虚拟防火墙性能和稳定性上的限制,目前硬件防火墙在这两点是优于虚拟防火墙的
1.nginx [engine x]是HTTP服务器和反向代理服务器,邮件代理服务器以及通用的TCP / UDP代 理服务器,最初由IgorSysoev编写。长期以来,它为许多高负载俄罗斯站点的服务器提供服务。
2.nginx有什么特点
①更快
②高扩展性
③高可靠性
④低内存消耗 一般情况下,10000个非活跃的HTTP
⑤单机支持10万以上的并发连接
⑥热部署
⑦最自由的BSD许可协议
Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,Spring Cloud Gateway 旨在为微服务架构提供一种简单而有效的统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,目标是替代 Netflix ZUUL,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。
3.Ribbonspringcloud ribbon是基于Netflix ribbon实现的一套客户端负载均衡的工具。
简单的说,Ribbon是Netflixf发布的开源项目,主要功能是提供醍醐的的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如:连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询、随机连接等)去连接这些机器。我们很容易的使用Ribbon实现自定义的负载均衡算法。
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。
5.Spring Security 1.介绍整体介绍,Spring Security为基于J2EE开发的企业应用软件提供了全面的安全服务,特别是使用Spring开发的企业软件项目,如果你熟悉Spring,尤其是Spring的依赖注入原理,这将帮助你更快掌握Spring Security,目前使用Spring Security有很多原因,通常因为在J2EE的Servlet规范和EJB规范中找不到典型应用场景的解决方案,提到这些规范,特别要指出的是它们不能在WAR或EAR级别进行移植,这样如果你需要更换服务器环境,就要在新的目标环境中进行大量的工作,对你的应用进行重新配置安全,使用Spring Security就解决了这些问题,也为你提供了很多很有用的可定制的安全特性。
Spring Security包含三个主要的组件:SecurityContext、AuthenticationManager、AccessDecisionManager.
(1)认证;(2)权限拦截;(3)数据库管理;(4)权限缓存;(5)自定义决策;
6.OAuth 1.介绍OAuth的英文全称是Open Authorization,它是一种开放授权协议。OAuth目前共有2个版本,2007年12月的1.0版(之后有一个修正版1.0a)和2010年4月的2.0版,1.0版本存在严重安全漏洞,而2.0版解决了该问题,下面简单谈一下我对OAuth2.0的理解。
2.OAuth2.0有什么用?引用一下OAuth2.0中文文档中的介绍:
1.需要第三方应用存储资源所有者的凭据,以供将来使用,通常是明文密码。
2.需要服务器支持密码身份认证,尽管密码认证天生就有安全缺陷。
3.第三方应用获得的资源所有者的受保护资源的访问权限过于宽泛,从而导致资源所有者 失去对资源使用时限或使用范围的控制。
4.资源所有者不能仅撤销某个第三方的访问权限而不影响其它,并且,资源所有者只有通 过改变第三方的密码,才能单独撤销这第三方的访问权限。
5.与任何第三方应用的让步导致对终端用户的密码及该密码所保护的所有数据的让步。
简单概括,就是用于第三方在用户授权下调取平台对外开放接口获取用户相关信息。
OAuth引入了一个授权环节来解决上述问题。第三方应用请求访问受保护资源时,资源 服务器在获准资源用户授权后,会向第三方应用颁发一。
Feign是一个声明式的Web Service客户端。它的出现使开发Web Service客户端变得很简单。使用Feign只需要创建一个接口加上对应的注解,比如:FeignClient注解。Feign有可插拔的注解,包括Feign注解和JAX-RS注解。
Feign也支持编码器和解码器,Spring Cloud Open Feign对Feign进行增强支持Spring MVC注解,可以像Spring Web一样使用HttpMessageConverters等。
Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求。
1.可插拔的注解支持,包括Feign注解和JAX-RS注解。
2.支持可插拔的HTTP编码器和解码器(Gson,Jackson,Sax,JAXB,JAX-RS,SOAP)。
3.支持Hystrix和它的Fallback。
4.支持Ribbon的负载均衡。
5.支持HTTP请求和响应的压缩。
6.灵活的配置:基于 name 粒度进行配置
7.支持多种客户端:JDK URLConnection、apache httpclient、okhttp,ribbon)
8.支持日志
9.支持错误重试
10.url支持占位符
11.可以不依赖注册中心独立运行
要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。
线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变量(state)。
进程锁:为了控制同一 *** 作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程无法访问其他进程的资源,因此无法通过synchronized等线程锁实现进程锁。
分布式锁:当多个进程不在同一个系统中,用分布式锁控制多个进程对资源的访问。
2.分布式主键分布式主键的需求
全局唯一性: 不能出现重复的 ID 号,既然是唯一标识,这是最基本的要求。
趋势递增: 在 MySQL InnoDB 引擎中使用的是聚集索引,由于多数 RDBMS 使用 B-tree 的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保证写入性能。
单调递增: 保证下一个 ID 一定大于上一个 ID,例如事务版本号、IM 增量消息、排序等特殊需求。
信息安全: 如果 ID 是连续的,恶意用户的扒取工作就非常容易做了,直接按照顺序下载指定 URL 即可;如果是订单号就更危险了,竞对可以直接知道我们一天的单量。所以在一些应用场景下,会需要 ID 无规则、不规则。
分布式事务指事务的 *** 作位于不同的节点上,因此需要服务与服务之间远程协作才能完成事务 *** 作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务,例如:
■ 跨数据源的分布式事务
■ 跨服务的分布式事务
■ 综合情况
CAP是什么
C:Consistency(强一致性)
A:Availability(可用性)
P:Partition tolerance(分区容错性)
CAP理论关注粒度是否是数据,而不是整体系统设计的策略
最多只能同时较好的满足两个。
CAP理论的核心是:一个分布式系统,不可能同时很好的满足一致性,可能用和分区容错性这三个需求;因此,根据CAP原理,将NoSQL数据库分成了满足CA原则,满足CP原则和满足AP原则,三大类:
CA-单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
CP-满足一致性,分区容错的系统,通常性能不是特别高。
AP-满足可用性,分区容错的系统,通常对一致性要求略低一些。
什么是分布式BASE定理?
BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。
BASE理论是eBay架构师提出的。
BASE定理来源:是CAP中一致性和可用性的权衡结果,它来自大规模互联网分布式系统的总结,是基于CAP定理逐步演化而来的。
BASE定理的核心思想:即使无法做到强一致性,但是每个应用可以根据自身的业务特定,采用合适的方式来达到最终一致性。
是用于数据采集使用,通常用于 日志文件, 指标,网络数据, windows事件日志,审计数据,运行事件监控,无需服务器的采集器。
2.logstash 1.概述简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。
logstash常用于日志系统中做日志采集设备,最常用于ELK中作为日志收集器使用
2.作用集中、转换和存储你的数据,是一个开源的服务器端数据处理管道,可以同时从多个数据源获取数据,并对其进行转换,然后将其发送到你最喜欢的“存储
3.KafkaApache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。
Kafka最初是由LinkedIn开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。
Kafka是一个分布式消息队列:生产者、消费者的功能。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。
Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。
无论是kafka集群,还是producer和consumer都依赖于zookeeper**集群保存一些meta信息,来保证系统可用性
Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等kibana能够很轻易地展示高级数据分析与可视化。
Kibana让我们理解大量数据变得很容易。它简单、基于浏览器的接口使你能快速创建和分享实时展现Elasticsearch查询变化的动态仪表盘。安装Kibana非常快,你可以在几分钟之内安装和开始探索你的Elasticsearch索引数据,不需要写任何代码,没有其他基础软件依赖。
ElasticSearch:智能搜索,分布式的搜索引擎
Elasticsearch是一个分布式文档存储。 Elasticsearch不会将信息存储为列数据的行,而是存储已序列化为JSON文档的复杂数据结构。 当集群中有多个Elasticsearch节点时,存储的文档将分布在集群中,并且可以从任何节点立即访问。
是ELK的一个组成,是一个产品,而且是非常完善的产品,ELK代表的是:E就是ElasticSearch,L就是Logstach,K就是kibana
E:EalsticSearch 搜索和分析的功能
L:Logstach 搜集数据的功能,类似于flume(使用方法几乎跟flume一模一样),是日志收集系统
K:Kibana 数据可视化(分析),可以用图表的方式来去展示,文不如表,表不如图,是数据可视化平台
6.以Skywalking为核心的运维监控中心可用提供链路追踪和监控报警机制,与运维报警系统Prometheus结合Grafana最终和Alertmanager通过短信、微信或者邮件的形式给模块负责人发送警告通知。 7.最后Developer将代码文件上传到GitHub上通过docker容器部署,使用K8s AP对资源进行编排,管理应用的全生命周期,同时也提高发布与更新版本的效率,然后通过Jenkins Pipeline进行整个构建、测试、交付等持续集成,运维人员继续对这些进行维护。 2.需求开发 1.数据库 1.枚举列表1.附近
2.价格区间
3.星级
4.智能排序
1.id
2.名称
3.星级
4.城市名
5.区域
6.附近地标
7.经纬度
…
这次项目经历了一个月的时间,虽然成型之后的代码量不多,但是前期的设计花费了很多的经历,大家用钉钉一起开了很多的会议,使用师哥推荐的airpost来对接口进行一次次的修改并最终确定。同时,项目涉及的技术众多,花费了很多的时间去了解每项技术的功能和用法。在代码编写和检查阶段,师哥每天给大家开会,给大家指点和讲解代码中的错误和不规范之处,让我更好的接触了公司的开发要求和规范。在项目整合阶段,用到git去将项目提交到仓库进行整合,在使用git当中,由于之前都是个人学习和编程代码,git没有使用很多,将自己的项目提交到了主分支,不知道如何撤回,经过伙伴们的指点和自己在CSDN上的搜索,找到了git回滚之前提交项目的命令。现在,经过大家个共同努力,看到了成型后的项目,体会到了团队协作的感受和实战项目的参与感。
在这次项目的整个过程中,我认为最辛苦的是师哥,他认真负责,给大家指点设计方案,代码中的不规范,给找工作的伙伴安排面试题帮助伙伴们找工作和提升面试经验,帮助伙伴们解决他们遇到的生活中的烦恼,同时给大家讲述社会行情,给予大家一定的压力,鼓励大家更努力的学习,讲述目前的行业行情和他自身的人生经历,给我带来了很多的感触和理解。其次感谢项目中的每位伙伴,有每位伙伴的参与,项目才能成型展示在大家的面前。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)