什么是Service-Mesh
Service Mesh (服务网格)是一个用于处理服务和服务之间通信的基础设施层,它最重要的变革,就是引入了数据面和控制面的概念:通过 sidecar 模式将原本在 SDK 中的代码独立出来,用控制面代替配置中心的部分功能,以透明代理的形式提供安全、快速、可靠的服务间通信,同时也能实现微服务所需的基本组件功能。 可以把 Service Mesh 看作是分布式的微服务代理 实际上早在2013年,作为微服务架构的大规模应用方 Netflix, 就发现了微服务架构在跨语言上的问题。Netflix 大量使用 Java 技术栈,但因为公司的业务发展,使用单一技术栈是不现实的。语言总是有特定的应用场景,这个时候 Netflix 发现开发多语言的 SDK 要耗费大量的人力,毕竟 Spring Cloud 里的组件可不是一般的多,为每个语言开发一套,显然得不偿失,所以就想到了 sidecar 模式,把 SDK 里的功能转移到 sidecar 中。 所谓 sidecar, 其实就是一个部署在本地的代理服务器 Service Mesh 的优势1.语言无关提到 Service Mesh 的优点,或许你最 ...
web安全
漏洞攻防学习 Web 漏洞包含哪一些主流的漏洞类型,最佳的参考就是 OWASP Top 10 123456789101112131415161718191、注入:SQL、NoSQL 数据库注入,还有命令注入和 LDAP 注入等。2、失效的身份认证和会话管理:比如攻击者破解密码、窃取密钥、会话令牌或其他漏洞去冒充他人的身份。3、跨站脚本(XSS):XSS 允许攻击者在受害者的浏览器上执行恶意脚本,从而劫持用户会话、钓鱼欺骗等等。4、失效的访问控制:比如越权访问其他用户的个人资料、查看敏感文件、篡改数据等。5、安全配置错误:比如服务器的不安全配置,导致敏感信息泄露。6、敏感信息泄露:比如账号密码未加密存储、敏感数据传输时未加密保护,最终造成数据泄露。7、攻击检测与防护不足:比如 WAF、主机入侵检测等防御系统部署不全,这块偏向漏洞防御本身。8、跨站请求伪造(CSRF):攻击者诱使其他登录用户访问恶意站点,以冒用对方的身份执行一些敏感操作。9、使用含有已知漏洞的组件:比如一些第三方的开源库、框架等,尤其是已公开漏洞的旧版本,比如名燥一声的 Struts2 漏洞,因频繁出现漏洞被许多开发者弃用 ...
分布式数据库
只记录关键内容 分布式数据库,从名字上可以拆解为:分布式+数据库。用一句话总结为:由多个独立实体组成,并且彼此通过网络进行互联的数据库。 数据分片概论 分片是将大数据表分解为较小的表(称为分片)的过程,这些分片分布在多个数据库集群节点上 水平分片:在不同的数据库节点中存储同一表的不同行。 垂直分片:在不同的数据库节点中存储表不同的表列。 哈希分片,首先需要获取分片键,然后根据特定的哈希算法计算它的哈希值,最后使用哈希值确定数据应被放置在哪个分片中。 数据库一般对所有数据使用统一的哈希算法(例如 ketama),以促成哈希函数在服务器之间均匀地分配数据,从而降低了数据不均衡所带来的热点风险。通过这种方法,数据不太可能放在同一分片上,从而使数据被随机分散开 分片键生成ShardingShpere 首先提供了分布式的主键生成,这是生成分片键的关键。由于分布式数据库内一般由多个数据库节点参与,因此基于数据库实例的主键生成并不适合分布式场景。 常用的算法有 UUID 和 Snowfalke 两种无状态生成算法。 Snowfalke 其中有效部分有三个。 时间戳:算法类似 UNIX 时间的表示形式 ...
redis设计与实现一
12345678⭐docker安装redis6----------------docker pull redis:6.0.5docker run -p 6379:6379 -v /redis/data:/data -v /redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:6.0.5 redis-server /usr/local/etc/redis/redis.conf --appendonly yes⭐安装成功 查看镜像: docker ps 可以看到redis容器⭐进入redis容器: docker exec -it 495a62aab27e /bin/bash⭐运行一个redis客户端:redis-cli 可以执行一些命令了 12redis社区、文档、命令大全:http://www.redis.c ...
分布式事务Seata
在分布式架构中有两种经典的分布式事务解决方案:二阶段提交(2PC)与三阶段提交(3PC)。 二阶段提交第一个阶段:事务预处理阶段 相比单点事务,分布式事务中增加了一个新的角色:事务协调者(Coordinator) 它的职责就是协调各个分支事务的开启与提交、回滚的处理 2PC阶段二:提交阶段 在提交阶段,事务协调者会向每一个服务下达提交命令,每个服务收到提交命令后在本地事务中对阶段一未提交的数据执行 Commit 提交以完成数据最终的写入,之后服务便向事务协调者上报“提交成功”的通知。当事务协调者收到所有服务“提交成功”的通知后,就意味着一次分布式事务处理已完成。 – 对于二阶段提交来说,它有一个致命问题,当阶段二某个服务因为网络原因无法收到协调者下达的提交命令,则未提交的数据就会被长时间阻塞,可能导致系统崩溃。 其实只要在服务这一侧增加超时机制 因超时自动执行提交操作,释放锁定资源 尽管这样做会导致数据不一致,但也比线程积压导致服务崩溃要好,出于此目的,三阶段提交(3PC)便应运而生。 三阶段提交将二阶段中的提交阶段拆分为“预提交阶段”与“提交阶段” 同时在服务端都引入超时机制,保证 ...
常见加密算法
对称加密算法AES对称加密算法加密和解密使用的是同一份秘钥,解密是加密的逆运算。 对称加密算法加密速度快,密文可逆,一旦秘钥文件泄露,就会导致原始数据暴露。 对称加密的结果一般使用Base64算法编码。 JDK8支持的对称加密算法主要有DES、DESede、AES、Blowfish,以及RC2和RC4等。 AES 12345678910111213141516171819202122232425262728293031323334353637383940414243import org.junit.Test;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import java.util.Base64;public class Demo { @Test public void test() throws Exception { Str ...
springboot源码解析
前言Spring Boot核心功能 独立运行jar 包形式 Spring 项目 内嵌 Servlet 容器 提供 Starter 简化 Maven 配置 自动配置 Spring Bean 准生产的应用监控 无代码生成和 XML 配置 Spring Boot 的核心注解 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilte ...
什么是Nginx
Nginx 简介是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强 Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php 等。但是不支java。Java 程序只能通过与 tomcat 配合完成。Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,能支持高 达 50000 个并发连接数。 反向代理 其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。 负载均衡 动静分离 为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。 Nginx 安装1234567891011121314151617181920docker pull nginx:1.10docker run -p 80:80 --name ngi ...
ZooKeeper常用命令+Curator使用
ZooKeeper安装和使用123456789//安装docker pull zookeeper:3.5.8//启动docker run -d --name zookeeper -p 2181:2181 zookeeper:3.5.8//进入容器docker exec -it zookeeper /bin/bash//启动zookeepercd bin./zkCli.sh server 127.0.0.1:2181 常用命令演示123456789101112131415//创节点create /node1 "node1"create /node1/node1.1 123//跟新节点set /node1 "node2"//获取节点get /node1//查看节点 子节点ls /ls /no ...
什么是RabbitMq
消息队列-RabbitMq 1、AMQP 简介AMQP (Advanced Message Queuing Protocol,高级消息队列协议)是一个线路层的协议规范, 而不是 API 规范(例如 JMS)。由于 AMQP 是一个线路层协议规范,因此它天然就是跨平台的, 就像 SMTP、 HTTP 等协议一样,只要开发者按照规范的格式发送数据,任何平台都可以通过 AMQP 进行消息交互。像目前流行的 StormMQ、 RabbitMQ 等都实现了 AMQP。 2、安装RabbitMq 自行百度 3、使用 依赖 12345<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> <version>1.5.2.RELEASE</version></dependency> 配置 1234spring.rabbitmq.host=127.0. ...