2023-12-18|使用Spring Security实现OAuth2授权和认证

Today I Learned. 今天分享内容:使用Spring Security实现OAuth2授权和认证。

最近在开发 Spring Cloud 微服务时,需要对 OAuth2 的异常处理进行定制,从网上搜到一个 github 仓库:oauth2。这篇仓库的代码实现了 OAuth2 的四种授权模式、I18N 国际化、异常处理、JWT Token,我 fork 了一份代码,做了一些改动,去掉了 webflux、eureka 相关代码。

More »

2023-12-14|购买新的VPS服务器、最近在做什么

Today I Learned. 今天分享内容:购买新的 VPS 服务器、最近在做什么。

购买新的 VPS 服务器

今天看到搬瓦工上的 VPS 还有一个月到期,该 VPS 配置是 40 GB SSD、2 GB RAM、2 TB Bandwidth、3x Intel Xeon CPU、1 Gigabit Network,一年费用是 99 美元。

More »

All things about MicroProfile

最近在一些开源项目中看到了 MicroProfile ,于是在网上查阅了相关资料加深对 MicroProfile 的理解,并做了笔记形成此文。

MicroProfile

MicroProfile是一个开放的企业级Java微服务框架,旨在简化和标准化基于微服务架构的应用程序开发。它是由Eclipse Foundation主导的一个开源项目,致力于提供轻量级、可移植和可互操作的Java微服务规范和实现。

More »

如何设计一个分布式ID生成器保证ID按时间有序?

很多业务有生成唯一 ID 并作为数据库主键的需求。数据库会在这个字段上建立聚集索引(参考 MySQL InnoDB),即该字段会影响各条数据再物理存储上的顺序。

ID还要尽可能,节省内存,让数据库索引效率更高。基本上64位整数能够满足绝大多数的场景,但是如果能做到比64位更短那就更好了。需要根据具体业务进行分析,预估出ID的最大值,这个最大值通常比64位整数的上限小很多,于是我们可以用更少的bit表示这个ID。

查询的时候,往往有分页或者排序的需求,所以需要给每条数据添加一个时间字段,并在其上建立普通索引(Secondary Index)。但是普通索引的访问效率比聚集索引慢,如果能够让ID按照时间粗略有序,则可以省去这个时间字段。为什么不是按照时间精确有序呢?因为按照时间精确有序是做不到的,除非用一个单机算法,在分布式场景下做到精确有序性能一般很差。

More »