大家好!我是andy哥。作为有8年Java开发经验和2年微服务开发架构的我,我简单说下认为的微服务技术难点。微服务开发主要有哪些难点呢?
技术引入是为了满足业务需求存在,所以微服务难点主要是体现在技术复杂性和业务的隔离性
# **微服务技术难点如下:**
1.服务的治理(服务的注册,发现和上下线处理)
2.服务的鉴权和认证 (gateway,jwk)
3.服务的分布式事务(多(组合)服务的事务)
4.服务的配置管理 (如何保证配置动态更改)
5.服务的限流和降级,熔断 (hystrix,sentinel)
6.数据的一致性问题(缓存)
7.服务的链路追踪 (sk,zipkin,cat)
8.分布式日志收集 (elk)
9.服务的高可用(防止单点故障(集群多节点),网络不可达,超时,容错机制)
10.服务的高性能(异步,序列化,压缩)
11.分布式回话处理 (redis,spring session)
12.分布式锁(多进程多线程并发问题)
13.请求可靠性发送(保证内容不丢失)
14.服务的高效部署和回滚,以及版本控制 (jenkins gitlab)
15.服务的弹性伸缩性(k8s弹性扩缩容)
16.前后端协作(文档,开发规范)
17.服务的通信安全(防窃取,防重放,防篡改)
18.灰度发布和版本内容管理
19.数据库分表分库 (分区表,sharding jdbc)
20.redis缓存问题处理(击穿,穿透,雪崩)
# 业务难点如下:
1.业务拆分 (服务边界)
2.业务抽象建模(梳理自己业务处理流程)
3.业务的聚合 (组合多服务的内容)
4.业务场景复杂性 (需要针对不同场景特殊处理,如:秒杀,团购)
5.需求多变 (用户行为分析)
6.系统拆分 (拆分大系统模块)