认识微服务

3,853 阅读3分钟

什么是微服务?

微服务是一种架构风格。

它可以通过强壮的模块边界和独立部署,来帮助你快速的扩展开发团队。

其实微服务本身不是什么新技术,只是随着业务的不断发展,对业务不断分层,不断拆分。

它被业界公认为云计算时代互联网应用的主要构建方式,是每一位技术人员必须面对的主题。

为什么要使用微服务?

(1)比如,公司的不同业务都会有不同管理后台,每个后台都有登录、注册、权限管理、日志管理等模块。

这些模块在不同系统中基本上都是类似的,无需每次都拷贝代码。

So,开发一个微服务,管理基础模块。

(2)比如,随着业务的并发性越来越高,访问DB数量过大,需要考虑引入缓存层。

由于没有统一缓存服务,各个业务线都自己开发自己的缓存层。

大家都做着重复工作,稍有不慎可能缓存KEY产生冲突,造成数据混乱。

So,开发一个微服务,管理缓存层。

(3)比如,各个业务线操作数据库可直接进行拼接SQL查询。

那么经验少一些的开发工程师,写了一个低效率的SQL。

导致全表扫描直接卡死,直接影响到其他业务线系统的可用性。

DBA不好定位SQL是那个业务组,每次SQL调优都需要问候全部业务组。

So,开发一个微服务,实现数据调取层。

(4)...

应用场景还有很多...

大家可以根据各自业务进行服务拆分。

开发微服务应该考虑那些?

(1)衡量是否需要进行使用微服务?

微服务并不适合每个人,由于技术人员少或者项目并不多的情况下,就不需开发微服务。

(2)考虑服务到达怎么的独立程度?

微服务到底需要多微小,这个是根据自己的业务情况而定,没有统一标准。

微服务并不是越微越好!!!

设计原则:是给自己提供便利,而不是自己给自己挖坑。

(3)是否对微服务进行实时监控?

随着业务的越来越多,并发量,访问量,存储量 等等越来越大的时候。

需要考虑对微服务进行实时监控,考虑是否需要扩容,性能调优等等。

(4)微服务如何进行测试?

微服务使用的业务部门比较多,当新的业务部门使用时,如何便于测试?

在测试的过程中,遇到问题如何在不影响其他业务的同时进行修复?

实际事情实际考虑,最好能提供测试用例。

(5)微服务如何进行治理?

随着项目的微服务越来越多,类似于“盘丝洞”的服务应该如何治理?

具体问题,具体分析吧,我这也没具体思路,欢迎大家讨论。

微服务的调用方式?

HTTP接口 或 RPC。

这两种方式可以都试用下,具体那种更合适自己就选那种。

至于这两种方式有什么区别,我担心我解释完了大家更疑惑。

我个人推荐用 RPC(远程过程调用协议)。

RPC 就像调用本地方法一样,对调用者来说使用更方便。

RPC 开源框架很多,可以根据自己的开发语言进行选择适合自己的。

PHP 常见的RPC框架: phprpc、yar、thrift、gRPC、swoole、hprose。

备注

本文仅仅是抛砖引玉,具体在实现的过程中,还有遇到很多问题。

欢迎大家进行讨论~


Thanks ~