前言
对于大多数系统来说,敏感数据的加密存储都是必须考虑和实现的。最近在公司的项目中也接到了相关的安全需求,因为项目使用了 MyBatis 作为数据库持久层框架,在经过一番调研后决定使用其插件机制来实现字段加解密功能,并且封装成一个轻量级、支持配置、方便扩展的组件提供给其他项目使用。
对于大多数系统来说,敏感数据的加密存储都是必须考虑和实现的。最近在公司的项目中也接到了相关的安全需求,因为项目使用了 MyBatis 作为数据库持久层框架,在经过一番调研后决定使用其插件机制来实现字段加解密功能,并且封装成一个轻量级、支持配置、方便扩展的组件提供给其他项目使用。
OAuth 2.0 是目前互联网上非常流行的一种授权机制,它的工作原理是将用户身份验证委托给托管用户帐户的服务并授权第三方应用程序访问该用户帐户。在几乎所有主流的大型互联网产品中都有应用。例如,在登录掘金时,可以选择微博、微信或者 Github 这些第三方账号登录,这里的第三方登录使用的就是 OAuth 2.0 的授权机制。
在单机环境下,Java 中的 synchronized
关键字和 ReentrantLock
可重入锁可以满足我们在并发场景下对锁的需求。但是在单机环境满足不了业务需求的情况下,我们一般会选择分布式部署服务,在分布式环境下,synchronized
和 ReentrantLock
的加锁方法已经失效了,因为它们是本地锁,只能在单个服务内实现锁的功能,于是分布式锁就出现了。
最近使用 jmeter 做了部分压测的工作,记录一下在压测过程中使用到的一些有用的方法和技巧。
spring-boot-starter-actuator
是一个用于监控和管理 Spring Boot 应用的组件。使用 spring-boot-starter-actuator
之后,我们可以非常方便的通过 HTTP 接口或者 JMX 获取到服务的运行状态,依赖的数据库状态,JVM 的运行状态,搜集指标等等,从而实现对服务的监控和管理。配合 prometheus 和 grafana 可以快速的实现监控数据可视化。
Alfred is an award-winning app for macOS which boosts your efficiency with hotkeys, keywords, text expansion and more. Search your Mac and the web, and be more productive with custom actions to control your Mac.
在 Mac 系统中不管是自带的还是第三方的都有很多可以提高效率的软件,比如自带的 Spotlight,第三方的 Better And Better 都是很优秀的效率软件。但是 Alfred 才是最出名的效率神器,它跟 Spotlight 相似,但它的功能远比 Spotlight 强大,我们完全可以用它来代替 Spotlight。
JMeter 是 Apache 组织开源的一款纯 Java 编写的压力测试软件。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来也扩展到其他测试领域。包括 FTP、SMTP、TCP、JMS、数据库等等。
在微服务架构中,一般每个服务都会做集群部署,一是可以做负载均衡,二是需要保证服务的高可用。但是由于网络或服务器或服务自身等原因,都有可能导致某一个服务出现问题,如果某个服务出现响应缓慢的情况,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet 容器的线程资源会被消耗完毕,导致服务瘫痪。由于服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。
Ribbon 是一个基于 HTTP 和 TCP 的负载均衡客户端,Ribbon 默认提供了很多负载均衡算法,例如轮询、随机等。当然,开发者也可为 Ribbon 实现自定义的负载均衡算法。上一篇笔记中提到的 Feign 已经默认使用了 Ribbon。SpringCloud 远程调用还有另一种方式——RestTemplate,这次使用 RestTemplate 作为 Web 客户端。
服务提供者和消费者是微服务架构中两个重要的角色,服务提供者生产服务并注册到服务中心中,消费者从服务中心中获取服务并执行。