
微服务架构设计
从零开始架构设计微服务,特点是简单可依赖原则,用最简单的设计,最精简的框架,最少量的代码实现相当完整可依赖的功能
架构师小侯
JAVA架构师
一个热爱编程的程序员
技术路线,微服务->大数据->大模型
展开
-
hjr-微服务(八):如何做限流
我们要把A池子的水转到B池子,如何控制水平稳的从A池子进入B池子就是限流。原创 2023-03-16 18:02:16 · 262 阅读 · 0 评论 -
hjr-微服务(七):如何保障数据一致性和高可用的平衡
可用性(Availability):利用分布式事务,每次写操作或者全部成功或者全部失败,用户访问服务器上面的数据,响应时间在可以接受的范围内,如果想要快速返回数据就不能在数据同步上花费太多时间。分区容错性(Partition tolerance):分区指,分布式系统节点通信故障了,两个故障的节点就是两个分区,把数据同步复制到多个分区。一致性(Consistency):多个数据副本的数据保持一致,如果花费很多时间在数据同步上,会导致查询无法立刻返回最新数据,因为没同步完成呢。分布式事务:事务消息表。原创 2023-03-16 17:47:10 · 458 阅读 · 0 评论 -
hjr-微服务(六):如何保障服务稳定性
服务稳定是一个特别大的话题,一般我们用SLA描述服务的质量SLA一般有99.9 ,99.99,就是我们常说的三个9,四个9有两个纬度衡量。原创 2023-02-03 17:04:53 · 721 阅读 · 0 评论 -
hjr-微服务(五):微服务的常见问题
在我们知道如何搭建一个最简单的微服务系统后,我们还需要解决几个关键的问题。原创 2023-02-03 15:40:39 · 328 阅读 · 0 评论 -
hjr-微服务(四):接口级别的权限控制
实现步骤 我们想要对每个接口做权限控制 先给整个系统所有左侧菜单做一个动态配置功能,前端所有访问后端接口的操作按钮多做为一个子项目新增一条记录,设置一个全局唯一的key 每个角色和菜单权限记录关联起来,建一个多对多的表 后端每个接口和上文的全局唯一的key对应上加一个注解 @PreAuthorize("hasAuthority('全局唯一的key')") 在获取jwt token的时候 根据登录用户id,查找角色,根据角色查找对应菜单权限的全局唯一的key,把key的list添加到 在文件原创 2021-12-31 14:26:19 · 1680 阅读 · 0 评论 -
hjr-微服务(三):关于日志
方案 其实日志方案总结就两种,一种是在入口加拦截,优点是对代码没侵入,代码量少,缺点是整个系统的api需要按照一种规范去命名 另一种是在每个接口上加自定义注解,注解里面拦截 这里我选择在入口拦截 对于微服务来说最好的入口就是网关 拦截 在网关拦截请求,并拦截返回值,可以获取请求成功还是失败 ...原创 2021-09-18 18:20:32 · 170 阅读 · 0 评论 -
hjr-微服务(二):关于认证和鉴权
认证 每个服务之间RPC调用是否需要认证,如果需要,肯定不能每次调用都查数据库判断账号密码验证因此 这里建议一个微服务专门作为认证服务,给所有访问认证服务的微服务发token,然后之后其他服务之间请求都带着token 然后token可以直接用jwt技术,自身包含一些如用户名等非敏感信息 这样我们只需要一个认证微服务,其余的每个服务都作为资源微服务,无论是前端请求后端,还是后端多个微服务间调用,都先请求认证微服务,获取jwt格式的token,之后每次请求都带着token即可 实现 我们直接使用 sprin原创 2021-09-14 17:40:33 · 562 阅读 · 0 评论 -
hjr-微服务(一):认识JAVA微服务
首先我希望能用三言两语,把微服务解释清楚,因此尽量避免废话, 然后这里说的都是JAVA的 概念 原先一个大web后端系统是一个java进程,包含全部的功能 缺点是 改一句代码需要全部重新打包部署 开发人员每个人都从git clone了全部的代码,看着就头疼 因此我们 把一个大系统拆分成多个java进程 每个java进程负责一部分业务,比如一个负责用户相关的,一个负责订单相关的,分别两个人负责 然后放到两个git上,两个开发人员各自维护自己的git即可,分别可以独立部署 然后我们会发现,如原创 2021-09-10 18:55:47 · 220 阅读 · 0 评论