當前位置:首頁 » 編程語言 » phpgrpc

phpgrpc

發布時間: 2023-08-09 13:01:17

linux安裝全鏈路追蹤工具skywalking8.0

SkyWalking是一個針對分布式系統的APM(應用性能監控)系統,特別針對微服務、cloud native和容器化架構,其核心是個分布式追蹤系統。它通過探針自動收集所需的指標,且基於探針技術對應用零侵入零耦合。通過這些調用鏈路以及指標,SkyWalking APM會感知應用間關系和服務間關系,並進行相應的指標統計。

解壓後,進入目錄,默認自帶了agent,這個是用來追蹤java項目的。我因為是用來追蹤php項目,所以這個用不上,如果要追蹤php項目,需要另外安裝php的agent,請查看我另外一篇文章( linux安裝sky-php-agent )

bin裡面是啟動文件

config目錄裡面是配置文件

webapp目錄裡面是UI界面項目文件和配置文件

默認情況下,只需要更改一下 config/application.yml文件

默認的restHost和gRPCHost的IP為0.0.0.0,我這里改成我這邊內網的IP。這里要注意一下,一旦改了IP,就只能用這個IP,比如我這里改成了內網IP,那麼用127.0.0.1都不能訪問

如果需要更改UI界面訪問的埠,可以修改 webapp/webapp.yml,裡面配置文件很簡單

注意一下,如果要想能夠讓受控端訪問到skywalking服務,那麼必須將12800埠對受控端伺服器打開。WEB界面的埠,我這里是8081,大家可以改成自己需要的埠。

變更完配置後,就可以進去bin目錄下,運行 startup.sh ,服務就會啟動。然後通過http://伺服器ip:8081進行界面訪問。
受控端如果也啟動了的話,這個時候,界面里就自動會出現數據了。
emmmm.....這里有個坑,默認情況下,打開界面什麼數據都看不到,這個需要點擊右上角的「自動」按鈕,讓按鈕變成藍色,這個時候就會有數據出現了。
如果還是沒有出現數據,那就檢查受控端服務是不是已經啟動了,或者去看一下logs目錄下的日誌。如果受控端連接服務端出現錯誤,就看skywalking-oap-server.log;如果受控端一切正常,界面數據還是不顯示,就看webapp.log

我在安裝的時候,使用startup.sh啟動文件,又遇到一個坑。這個啟動文件,無論中間是不是有報錯,都會提示啟動成功。而且因為沒有停止的命令,如果重復運行startup.sh,日誌里會提示埠佔用。這個時候,需要使用命令先查看佔用埠的進程,然後殺掉進程,再重新運營啟動文件才可以。

❷ php為什麼不適合做微服務

php不適合做微服務原因:例如與硬體通訊.至於開發的話,你可以用swoole擴展或者grpc。

PHP畢竟是CGI腳本,很多底層的驅動級的工作還不能做,而且主要是其面向對象不夠完善,在SOA上的應用還是有些不足。當然因為PHP能夠做些位計算什麼的,可以很方便的做些幀協議的操作,比如Radius協議的實現等。

快捷高效:

PHP的內核是C語言編寫的基礎好效率高,可以用C語言開發高性能的擴展組件;PHP的核心包含了數量超過1000的內置函數,功能應有盡有很全面,開箱即用程序代碼簡潔;PHP數組支持動態擴容,支持以數字、字元串或者混合鍵名的關聯數組,能大幅提高開發效率。

PHP是一門弱類型語言,程序編譯通過率高,相對其他強類型語言開發效率快;PHP天然熱部署,在php-fpm運行模式下代碼文件覆蓋即完成熱部署;PHP經過20多年的發展,在互聯網上可以搜到海量的參考資料供參考學習。

❸ wireshark內置支持protobuf嗎

搞網路開發的時候,涉及到很多私有協議。方便是方便,不過抓包分析問題就麻煩了,wireshark是不可能會為我們自己的網路協議開發分析工具的,唯有自己開發協議分析插件。在私有協議方面,google protobuf是一個類似與IDL的語言,用於定義消息介面,並且支持很多語言,原生支持C++、Java和Python,而且還有很多第三方的支持,基本上支持C、C#、object-c,AS3,PHP等.目前protobuf的解析並不是wireshark內置支持的,不排除以後的版本會支持。當前網路上有一個工程可以支持protobuf的解析(protobuf-wireshark),但是該插件原生支持的只有Linux版本,而且還只支持UDP解析。經本人改造,已經可以支持windows,並且同時支持TCP和UDP解析。TCP時,需要在protobuf之上加上一個4位元組的數據長度,用於支持後續的protobuf消息的大小。

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
消息長度 protobuf二進制消息內容
消息長度的值只包含protobuf消息的大小,不包含自己4個位元組的長度。例如protobuf長度為12位元組時, 消息長度裡面的值,應該是 00 00 00 0c,總的數據長度為16個位元組.(如果無法解析數據長度,調換一下網路位元組序)
另外對protobuf消息的定義也有一定的限制,必須有一個頂層的消息,例如Message1 和Message2如果是並列的消息,需要有一個Message來包含Message1和Message2.
【配置】
protobuf的配置文件放在C:\Program Files\Wireshark\protobuf目錄下面,C:\Program Files\Wireshark\為wireshark在電腦上的安裝目錄。protobuf文件夾默認是沒有的,自己創建。
把附件 *.proto;*.conf放在protobuf目錄下面,把dll放在plugins\1.8.6目錄下面。

❹ gRPC入坑記

概要

由於gRPC主要是谷歌開發的,由於一些已知的原因,gRPC跑demo還是不那麼順利的。單獨寫這一篇,主要是gRPC安裝過程中的坑太多了,記錄下來讓大家少走彎路。

主要的坑:

本文講解gRPC demo的同時,會介紹如何解決這些坑。本文對應的Github地址:https://github.com/52fhy/grpc-sample 。該倉庫存儲了demo示例,以及部分系統編譯好的二進制包,大家覺得有些步驟里耗時實在太長了,可以直接clone該倉庫,復制二進制包到對應目錄(僅限測試開發,生產環境還是老老實實自己編譯吧)。

升級GCC

gRPC命令行工具編譯需要使用 GCC4.8及以上版本。CentOS6系列的內置版本是GCC4.7。

如果你的系統GCC版本>=4.8,可以忽略本節。如果僅使用golang、java,請忽略本節。

如果需要升級gcc至4.8或更高版本,建議直接採用安裝SCL源之後安裝devtoolset-6(devtoolset-6目前gcc版本為6.3),因為devtoolset-4及之前的版本都已經結束支持,只能通過其他方法安裝。

升級到gcc 6.3:

需要注意的是scl命令啟用只是 臨時 的,退出shell或重啟就會恢復原系統gcc版本。如果要長期使用gcc 6.3的話:

這樣退出shell重新打開就是新版的gcc了。其它版本同理。

升級到gcc 7.3:

已經停止支持的devtoolset4(gcc 5.2)及之前版本的安裝方法,可能比較慢,大家感興趣的話可以嘗試。

編譯gRPC命令行工具

gRPC分C、JAVA、GO、NodeJS版本,C版本包括C++, Python, Ruby, Objective-C, PHP, C#,這些語言都是基於C版本開發的,共用代碼庫一個代碼庫。

如果使用C版本的gRPC,最終要從源碼里編譯出下列工具:

這些工具作為插件供proto編譯器使用。需要先下載 grpc/grpc github上的源碼。

這里有2個坑:

1、grpc/grpc倉庫比較大,鑒於國內訪問的網速,建議使用國內鏡像。碼雲(https://gitee.com)提供了同步更新的鏡像地址:

這樣下載速度提高了不少。

2、git submole update這個命令實際就是在下載.gitmoles文件里定義的第三方依賴項到third_party目錄,這個依賴項有很多,大家可以打開.gitmoles文件查看下詳情。依賴的倉庫都在github上,下載沒幾個小時是下載不下來的,就等著慢慢下載吧。

回頭想想,我們花費了很多時間,結果只是為了得到grpc的proto編譯插件。

PHP相關支持

PHP暫時不支持作為grpc的服務端。作為客戶端是可以的,需要機器安裝:

其中protoc和protobuf c擴展已經在 Protobuf 小試牛刀 介紹過了,這里不再贅述。上一小節里如果安裝成功,那麼grpc_php_plugin也是有了的。下面介紹如何安裝PHP版的gRPC庫。

安裝grpc c擴展:

要求:GCC編譯器需要4.8及以上版本。可以使用pecl安裝:

也可以指定版本:

或者下載源碼(http://pecl.php.net/package/grpc)安裝:

grpc/grpc代碼庫里也有PHP擴展的C源碼,在grpc/src/php/ext/grpc目錄,進去也可以直接編譯。

編譯完成後在php.ini里添加,使用php --ri grpc可以查看信息。

安裝完C擴展後,還需要使用composer安裝grpc的庫:

gRPC示例

編寫gRPC proto

一共定義了三個文件:

其中 User 作為 Model定義,Response 用於 RPC統一返回定義,GreeterService 則是服務介面定義。

限於篇幅,proto文件詳見 https://github.com/52fhy/grpc-sample 倉庫的proto目錄。

GreeterService.proto文件內容如下:

這裡面定義了一個service,相當於定義了一個服務介面,我們把方法名、參數定義好了,後面需要去實現它。由於gRPC不支持PHP作為服務端,這里我們使用Golang作為服務端。

首先需要使用proto工具編譯出golang的代碼:

執行成功,會在 Pb_Go目錄里生成Go代碼:

如果需要生成PHP客戶端的代碼,則需要使用grpc php的命令行工具grpc_php_plugin,前面小結如果執行成功,這個工具已經有了。然後:

最終生成的文件:

注意:編譯那裡如果我們不加--grpc_out=../$out --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin,生成的PHP類是沒有GreeterClient的。這個文件是gRPC編譯工具自動生成的,用於連接gRPC服務端。

go編寫服務

我們用Golang寫服務端。上面雖然生成了Golang的部分代碼,但真正的服務還沒有寫呢。

main.go

首先我們新建個main.go,代碼不多,我直接貼出來:

然後就可以編譯了。

有個大坑:go build main.go的時候會先下載go.mod里定義的依賴(依賴比較多,詳情查看:https://github.com/52fhy/grpc-sample/blob/master/go.mod),其中下面這條非常慢,倉庫太大了,雖然重定向到github:

為了快速下載,我在碼雲上做了鏡像,地址:gitee.com/52fhy/google-api-go-client 。改了之後下載快多了。

編譯成功後,生成了二進制文件main。我們可以直接運行:

go test

為了測試我們寫的服務是否正常,可以寫測試用例:

test_client.go

運行:

運行有點慢,感覺依賴的庫多了。

php客戶端

使用gRPC PHP客戶端,確保你已經安裝了:

示例:

client_test.php

運行後輸出:

常見問題

1、CentOS6使用 go mod獲取第三方依賴包unknown revision xxx錯誤

解決:其實go mod調用鏈中會用到一些git指令,當git版本比較舊時,調用失敗產生錯誤,並給出歧義的提示信息。方法就是升級git版本,CentOS6自帶的git是1.7版本。升級完畢後,再嘗試go mod。

快速升級方法:

centos6:

2、PHP報錯:Fatal error: Class &#' not found

解決:請安裝PHP的protobuf c擴展。

3、PHP報錯:Fatal error: Class 'GrpcBaseStub' not found

解決:使用composer require grpc/grpc安裝grpc。另外對應的grpc C擴展也要安裝。

4、下載 github release包很慢怎麼辦?

解決:下載Mac版 Free Download Manager 下載工具可以解決Github 下載緩慢或失敗問題。速度嗖嗖的。

參考

1、為CentOS 6、7升級gcc至4.8、4.9、5.2、6.3、7.3等高版本

http://www.vpser.net/manage/centos-6-upgrade-gcc.html

2、centos 6.x/7.x使用yum升級git版本 - 夜空

https://blog.slogra.com/post-721.html

3、Protobuf 小試牛刀 - 飛鴻影

https://www.cnblogs.com/52fhy/p/11106670.html

(本文完)

熱點內容
台式機忘記開機密碼怎麼辦 發布:2025-02-06 11:58:01 瀏覽:868
android刷新按鈕 發布:2025-02-06 11:57:17 瀏覽:585
存儲過程有輸入參數和輸出參數 發布:2025-02-06 11:55:32 瀏覽:96
成績評選演算法 發布:2025-02-06 11:42:51 瀏覽:994
資料庫測試數據 發布:2025-02-06 11:31:05 瀏覽:821
球頭軸編程 發布:2025-02-06 11:29:36 瀏覽:280
為什麼安卓系統不能收縮許可權 發布:2025-02-06 11:27:58 瀏覽:730
演算法4視頻 發布:2025-02-06 11:19:20 瀏覽:934
51內置音效卡需要什麼主機配置 發布:2025-02-06 11:18:33 瀏覽:838
防針刺傷的物品配置有哪些 發布:2025-02-06 11:11:25 瀏覽:670