使用HttpReports快速搭建API分析平臺

HttpReports

簡單介紹

HttpReports 是 .Net Core下的一個Web組件,適用於 WebAPI 項目和 API 網關項目,經過中間件的形式集成到您的項目中, 經過HttpReports,可讓開發人員快速的搭建出一個 API 性能分析的基礎報表網站。git

主要包含 HttpReports 中間件 和 HttpReports.Web 報表項目:github

HttpReports: https://github.com/SpringLeee/HttpReportsweb

HttpReports.Web: https://github.com/SpringLeee/HttpReportsWeb數據庫

如何使用

1.運行 HttpReports.Web

在github下載 HttpReports.Web 項目,項目地址:https://github.com/SpringLeee/HttpReportsWeb, Web項目是.Net Core MVC 項目,使用三層實現。json

下載完成後,在VS中打開,而後還原NuGet程序包,完成後首先 appsettings.jsonapi

appsettings.json

{
  "ConnectionStrings": {
    "HttpReports": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"
  }, 
  "HttpReportsConfig": {
    "DBType": "SqlServer",
    "UserName": "admin",
    "Password": "123456"
  }
}

主要參數:微信

  • HttpReports:配置一個可用的鏈接字符串;
  • DBType:數據庫類型,支持SqlServer和MySql;
  • UserName: Web項目的登陸名;
  • Password: Web項目的登陸密碼;

假設咱們使用的是SqlServer 數據庫,須要先配置ConnectionStrings,而後手動建立數據庫 HttpReports(Web項目會根據數據庫自動建立表,而且在第一次運行的時候Mock一些數據 ),咱們直接F5運行項目, 沒有問題的話,會直接跳到登陸頁面,輸入用戶名密碼 admin 123456,登陸後,應該能夠看到下面的頁面app

如今能夠看到項目有 auth,payment,sms 三個服務節點,服務節點的定義以下:異步

請求地址 服務節點 說明
https://www.abc.com/auth/api/user/login auth
https://www.abc.com/log/api/user/login log
https://www.abc.com/api/user/login default 若是沒有前綴的話,就是default節點

若是你的項目是單個WebAPI項目,那麼服務節點只有一個 default,若是你的項目是 GateWay 網關項目,那麼Web項目就能夠讀取到多個服務節點,好比 auth 認證,payment支付等。性能

2.在API項目中使用

首先要刪除 Web 項目的Mock數據,打開數據庫 HttpReports,打開表 RequestInfo,清空數據,執行Sql

Delete * From [HttpReports].[dbo].[RequestInfo]
配置數據庫鏈接字符串

HttpReports 適用單個API項目和網關項目,這裏使用 Ocelot網關項目爲例.

咱們打開appsetting.json, 配置數據庫鏈接字符串,須要和Web項目一致

Nuget引用HttpReports

安裝nuget包 HttpReports ,打開StartUp

在ConfigureServices 方法下添加:

services.AddHttpReportsMiddlewire();

若是是MySql數據庫,則添加:
csharp services.AddHttpReportsMiddlewire(options =>{ options.DBType = DBType.MySql; });

加入到 Configure 方法 ,須要放在 app.UseMVC() 或者 app.UseOcelot().Wait() 的前面,要否則不生效

app.UseHttpReportsMiddlewire();

ConnectionStrings 配置的鏈接字符串和數據庫類型要一致,所有完成了之後,咱們就可使用 Web 項目了。

項目環境基本要求

WebAPI或者網關項目支持的.Net Core 版本 2.2, 3.0, 3.1;

HttpReports.Web 的core版本爲 2.2

性能事項

HttpReports 中間件是異步操做,因此對api接口請求的時間能夠忽略,可是因爲實質使用的是數據庫存儲,因此要注意直接請求到數據庫的壓力。

下面是用PostMan作的一個簡單測試:

WebAPI內的方法:

public string Sql1()
        {
            SqlConnection con = new SqlConnection(
                "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HyBasicData;");

            var list1 =  con.Query(" select * from [HyBasicData].[dbo].[Customers] ");

            var list2 = con.Query(" select * from [HyBasicData].[dbo].[Customers] ");

            var list3 = con.Query(" select * from [HyBasicData].[dbo].[Customers] "); 

            return list1.Count().ToString();
        }

PostMan分別對添加中間件和不添加中間件的 API請求 1000次,每300ms請求一次

說明 請求次數 平均響應時間
原生API 1000 32.535
使用中間件 1000 32.899

總結

HttpReports 的實現原理並不複雜,若是你想給你的 WebAPI項目,快速的添加一套分析系統 ,那麼使用HttpReports 是一個不錯的選擇

聯繫做者

若是您在使用過程當中遇到了什麼問題或者有好的建議的話,能夠添加個人微信,但願能夠幫助到您

相關文章
相關標籤/搜索